完成模板模块动态支持命名空间

This commit is contained in:
橙子
2023-01-24 20:46:00 +08:00
parent 8a9c7e54e2
commit ec440f13b1
33 changed files with 63 additions and 263 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Yi.Framework.Template.ConstClasses;
namespace Yi.Framework.Template.Abstract
@@ -10,7 +11,7 @@ namespace Yi.Framework.Template.Abstract
public abstract class ModelTemplateProvider : ProgramTemplateProvider
{
public ModelTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public ModelTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
AddIgnoreEntityField(/*"Id", */"TenantId", "IsDeleted");
}

View File

@@ -10,15 +10,23 @@ namespace Yi.Framework.Template.Abstract
public abstract class ProgramTemplateProvider : AbstractTemplateProvider
{
public ProgramTemplateProvider(string modelName, string entityName)
public ProgramTemplateProvider(string modelName, string entityName,string nameSpaces)
{
ModelName = modelName;
EntityName = entityName;
NameSpaces = nameSpaces;
base.AddTemplateDic(TemplateConst.NameSpaces, NameSpaces);
base.AddTemplateDic(TemplateConst.EntityName, EntityName);
base.AddTemplateDic(TemplateConst.ModelName, ModelName);
base.AddTemplateDic(TemplateConst.LowerEntityName, EntityName.Substring(0, 1).ToLower() + EntityName.Substring(1));
base.AddTemplateDic(TemplateConst.LowerModelName, ModelName.ToLower());
}
/// <summary>
/// 命名空间
/// </summary>
public string NameSpaces { get; set; }
/// <summary>
/// 实体名称
/// </summary>

View File

@@ -36,7 +36,9 @@ namespace Yi.Framework.Template.ConstClasses
//public const string BuildRootPath = "../../../_Code";
public const string BuildRootPath = "../../../../../project";
public const string BuildEntityPath = "../../../../../project";
public const string NameSpaces = "#NameSpaces#";
public const string BuildRootPath = "../../../../../project/bbs";
public const string BuildEntityPath = "../../../../../project/bbs";
}
}

View File

@@ -8,23 +8,24 @@ TemplateFactory templateFactory = new();
//选择需要生成的模板提供者
string modelName = "School";
string nameSpaces = "Yi.BBS";
List<string> entityNames = new() { "Student" };
foreach (var entityName in entityNames)
{
templateFactory.CreateTemplateProviders((option) =>
{
option.Add(new ServiceTemplateProvider(modelName, entityName));
option.Add(new IServiceTemplateProvider(modelName, entityName));
option.Add(new ServiceTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new IServiceTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new CreateInputVoTemplateProvider(modelName, entityName));
option.Add(new UpdateInputVoTemplateProvider(modelName, entityName));
option.Add(new GetListInputVoTemplateProvider(modelName, entityName));
option.Add(new GetListOutputDtoTemplateProvider(modelName, entityName));
option.Add(new GetOutputDtoTemplateProvider(modelName, entityName));
option.Add(new CreateInputVoTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new UpdateInputVoTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new GetListInputVoTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new GetListOutputDtoTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new GetOutputDtoTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new ConstTemplateProvider(modelName, entityName));
option.Add(new ProfileTemplateProvider(modelName, entityName));
option.Add(new ConstTemplateProvider(modelName, entityName, nameSpaces));
option.Add(new ProfileTemplateProvider(modelName, entityName, nameSpaces));
//option.Add(new ApiTemplateProvider(modelName, entityName));
});
//开始构建模板

View File

@@ -10,9 +10,9 @@ namespace Yi.Framework.Template.Provider.Server
{
internal class ConstTemplateProvider : ProgramTemplateProvider
{
public ConstTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public ConstTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Domain.Shared\{TemplateConst.ModelName}\ConstClasses\{TemplateConst.EntityName}Const.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Domain.Shared\{TemplateConst.ModelName}\ConstClasses\{TemplateConst.EntityName}Const.cs";
TemplatePath = $@"..\..\..\Template\Server\ConstTemplate.txt";
}
}

View File

@@ -10,11 +10,11 @@ namespace Yi.Framework.Template.Provider.Server
{
public class CreateInputVoTemplateProvider : ModelTemplateProvider
{
public CreateInputVoTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public CreateInputVoTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}CreateInputVo.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}CreateInputVo.cs";
TemplatePath = $@"..\..\..\Template\Server\CreateInputVoTemplate.txt";
EntityPath = $@"{TemplateConst.BuildEntityPath}\Yi.Framework.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
EntityPath = $@"{TemplateConst.BuildEntityPath}\{nameSpaces}.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
}
}
}

View File

@@ -10,11 +10,11 @@ namespace Yi.Framework.Template.Provider.Server
{
public class GetListInputVoTemplateProvider : ModelTemplateProvider
{
public GetListInputVoTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public GetListInputVoTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}GetListInputVo.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}GetListInputVo.cs";
TemplatePath = $@"..\..\..\Template\Server\GetListInputVoTemplate.txt";
EntityPath = $@"{TemplateConst.BuildEntityPath}\Yi.Framework.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
EntityPath = $@"{TemplateConst.BuildEntityPath}\{nameSpaces}.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
}
}
}

View File

@@ -10,11 +10,11 @@ namespace Yi.Framework.Template.Provider.Server
{
public class GetListOutputDtoTemplateProvider : ModelTemplateProvider
{
public GetListOutputDtoTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public GetListOutputDtoTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}GetListOutputDto.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}GetListOutputDto.cs";
TemplatePath = $@"..\..\..\Template\Server\GetListOutputDtoTemplate.txt";
EntityPath = $@"{TemplateConst.BuildEntityPath}\Yi.Framework.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
EntityPath = $@"{TemplateConst.BuildEntityPath}\{nameSpaces}.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
}
}
}

View File

@@ -10,11 +10,11 @@ namespace Yi.Framework.Template.Provider.Server
{
public class GetOutputDtoTemplateProvider : ModelTemplateProvider
{
public GetOutputDtoTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public GetOutputDtoTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}\{TemplateConst.EntityName}GetOutputDto.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}\{TemplateConst.EntityName}GetOutputDto.cs";
TemplatePath = $@"..\..\..\Template\Server\GetOutputDtoTemplate.txt";
EntityPath = $@"{TemplateConst.BuildEntityPath}\Yi.Framework.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
EntityPath = $@"{TemplateConst.BuildEntityPath}\{nameSpaces}.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
}
}
}

View File

@@ -10,9 +10,9 @@ namespace Yi.Framework.Template.Provider.Server
{
public class IServiceTemplateProvider : ProgramTemplateProvider
{
public IServiceTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public IServiceTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\I{TemplateConst.EntityName}Service.cs";
TemplatePath = $@"..\..\..\Template\Server\IServiceTemplate.txt";
}
}

View File

@@ -10,9 +10,9 @@ namespace Yi.Framework.Template.Provider.Server
{
public class ProfileTemplateProvider : ProgramTemplateProvider
{
public ProfileTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public ProfileTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application\{TemplateConst.ModelName}\MapperConfig\{TemplateConst.EntityName}Profile.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application\{TemplateConst.ModelName}\MapperConfig\{TemplateConst.EntityName}Profile.cs";
TemplatePath = $@"..\..\..\Template\Server\ProfileTemplate.txt";
}
}

View File

@@ -10,9 +10,9 @@ namespace Yi.Framework.Template.Provider.Server
{
public class ServiceTemplateProvider : ProgramTemplateProvider
{
public ServiceTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public ServiceTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application\{TemplateConst.ModelName}\{TemplateConst.EntityName}Service.cs";
TemplatePath = $@"..\..\..\Template\Server\ServiceTemplate.txt";
}
}

View File

@@ -10,11 +10,11 @@ namespace Yi.Framework.Template.Provider.Server
{
public class UpdateInputVoTemplateProvider : ModelTemplateProvider
{
public UpdateInputVoTemplateProvider(string modelName, string entityName) : base(modelName, entityName)
public UpdateInputVoTemplateProvider(string modelName, string entityName, string nameSpaces) : base(modelName, entityName, nameSpaces)
{
BuildPath = $@"{TemplateConst.BuildRootPath}\Yi.Framework.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}UpdateInputVo.cs";
BuildPath = $@"{TemplateConst.BuildRootPath}\{nameSpaces}.Application.Contracts\{TemplateConst.ModelName}\Dtos\{TemplateConst.EntityName}UpdateInputVo.cs";
TemplatePath = $@"..\..\..\Template\Server\UpdateInputVoTemplate.txt";
EntityPath = $@"{TemplateConst.BuildEntityPath}\Yi.Framework.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
EntityPath = $@"{TemplateConst.BuildEntityPath}\{nameSpaces}.Domain\{TemplateConst.ModelName}\Entities\{TemplateConst.EntityName}Entity.cs";
}
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Domain.Shared.#ModelName#.ConstClasses
namespace #NameSpaces#.Domain.Shared.#ModelName#.ConstClasses
{
/// <summary>
/// 常量定义

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Application.Contracts.#ModelName#.Dtos
namespace #NameSpaces#.Application.Contracts.#ModelName#.Dtos
{
/// <summary>
/// #EntityName#输入创建对象

View File

@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Ddd.Dtos;
namespace Yi.Framework.Application.Contracts.#ModelName#.Dtos
namespace #NameSpaces#.Application.Contracts.#ModelName#.Dtos
{
public class #EntityName#GetListInputVo : PagedAndSortedResultRequestDto
{

View File

@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Ddd.Dtos;
namespace Yi.Framework.Application.Contracts.#ModelName#.Dtos
namespace #NameSpaces#.Application.Contracts.#ModelName#.Dtos
{
public class #EntityName#GetListOutputDto : IEntityDto<long>
{

View File

@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Ddd.Dtos;
namespace Yi.Framework.Application.Contracts.#ModelName#.Dtos
namespace #NameSpaces#.Application.Contracts.#ModelName#.Dtos
{
public class #EntityName#GetOutputDto : IEntityDto<long>
{

View File

@@ -3,10 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Application.Contracts.#ModelName#.Dtos;
using #NameSpaces#.Application.Contracts.#ModelName#.Dtos;
using Yi.Framework.Ddd.Services.Abstract;
namespace Yi.Framework.Application.Contracts.#ModelName#
namespace #NameSpaces#.Application.Contracts.#ModelName#
{
/// <summary>
/// #EntityName#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -4,10 +4,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Application.Contracts.#ModelName#.Dtos;
using Yi.Framework.Domain.#ModelName#.Entities;
using #NameSpaces#.Application.Contracts.#ModelName#.Dtos;
using #NameSpaces#.Domain.#ModelName#.Entities;
namespace Yi.Framework.Application.#ModelName#.MapperConfig
namespace #NameSpaces#.Application.#ModelName#.MapperConfig
{
public class #EntityName#Profile: Profile
{

View File

@@ -1,10 +1,10 @@
using Yi.Framework.Application.Contracts.#ModelName#;
using #NameSpaces#.Application.Contracts.#ModelName#;
using NET.AutoWebApi.Setting;
using Yi.Framework.Application.Contracts.#ModelName#.Dtos;
using Yi.Framework.Domain.#ModelName#.Entities;
using #NameSpaces#.Application.Contracts.#ModelName#.Dtos;
using #NameSpaces#.Domain.#ModelName#.Entities;
using Yi.Framework.Ddd.Services;
namespace Yi.Framework.Application.#ModelName#
namespace #NameSpaces#.Application.#ModelName#
{
/// <summary>
/// #EntityName#服务实现

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Application.Contracts.#ModelName#.Dtos
namespace #NameSpaces#.Application.Contracts.#ModelName#.Dtos
{
public class #EntityName#UpdateInputVo
{