False
False
False
False
False
True
True
post-processor
True
postproc
True
sealed class $name$ : IPostProcessor<$dto$Request, $dto$Response>
{
public Task PostProcessAsync($dto$Request req, $dto$Response res, HttpContext ctx, IReadOnlyCollection<ValidationFailure> fails, CancellationToken c)
{
$END$
}
}
True
constant("My")
1
True
constant("MyProcessor")
0
True
2.0
InCSharpFile
True
True
test class
True
tstclass
True
namespace Tests;
public class $name$Tests : TestClass<$fixture$Fixture>
{
public $name$Tests($fixture$Fixture f, ITestOutputHelper o) : base(f, o) { }
[Fact]
public async Task $test_name$()
{
$END$
}
}
True
constant("App")
1
True
constant("My")
0
True
constant("Name_Of_The_Test")
2
True
2.0
InCSharpFile
True
True
endpoint with request only
True
epreq
True
sealed class $epName$Request
{
}
sealed class $epName$Endpoint : Endpoint<$epName$Request>
{
public override void Configure()
{
$verb$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync($epName$Request r, CancellationToken c)
{
$END$
}
}
True
constant("My")
0
True
constant("route-pattern")
2
True
constant("Post")
1
True
2.0
InCSharpFile
True
True
创建命令
True
constant("My")
0
True
True
2.0
InCSharpFile
ncpcmd
True
public record $name$Command() : ICommand;
public class $name$CommandValidator : AbstractValidator<$name$Command>
{
public $name$CommandValidator()
{
// 添加验证规则示例:
// RuleFor(x => x.Property).NotEmpty();
}
}
public class $name$CommandHandler : ICommandHandler<$name$Command>
{
public async Task Handle(
$name$Command request,
CancellationToken cancellationToken)
{
// 实现业务逻辑
throw new NotImplementedException();
}
}
True
True
创建命令(含返回值)
True
constant("My")
0
True
True
2.0
InCSharpFile
ncpcmdres
True
public record $name$Command() : ICommand<$name$CommandResponse>;
public record $name$CommandResponse();
public class $name$CommandValidator : AbstractValidator<$name$Command>
{
public $name$CommandValidator()
{
// 添加验证规则示例:
// RuleFor(x => x.Property).NotEmpty();
}
}
public class $name$CommandHandler : ICommandHandler<$name$Command, $name$CommandResponse>
{
public async Task<$name$CommandResponse> Handle(
$name$Command request,
CancellationToken cancellationToken)
{
// 实现业务逻辑
throw new NotImplementedException();
}
}
True
True
endpoint request & response dtos
True
epdto
True
sealed class $name$Request
{
$END$
}
sealed class $name$Response
{
}
True
constant("My")
0
True
2.0
InCSharpFile
True
True
创建聚合根
True
constant("My")
0
True
True
2.0
InCSharpFile
ncpar
True
public partial record $name$Id : IInt64StronglyTypedId;
public class $name$ : Entity<$name$Id>, IAggregateRoot
{
protected $name$() { }
}
True
True
test fixture
True
tstfixture
True
namespace Tests;
public class $name$Fixture : TestFixture<Program>
{
public $name$Fixture(IMessageSink s) : base(s) { }
protected override Task SetupAsync()
{
$END$
}
protected override void ConfigureServices(IServiceCollection s)
{
}
protected override Task TearDownAsync()
{
}
}
True
constant("App")
0
True
2.0
InCSharpFile
True
True
cs
Endpoint
False
FastEndpoints Feature File Set
True
True
namespace $name_space$;
sealed class Request
{
}
sealed class Validator : Validator<Request>
{
public Validator()
{
}
}
sealed class Response
{
public string Message => "This endpoint hasn't been implemented yet!";
}
sealed class Endpoint : Endpoint<Request, Response, Mapper>
{
public override void Configure()
{
Post("$route$");
}
public override async Task HandleAsync(Request r, CancellationToken c)
{
await SendAsync(new Response());$END$
}
}
sealed class Mapper : Mapper<Request, Response, object>
{
}
static class Data
{
}
Class/Interface
True
fileDefaultNamespace()
1
True
constant("route-pattern")
0
True
InCSharpProjectFile
True
True
event handler
True
evnt
True
sealed class $name$ : IEvent
{
}
sealed class $name$Handler : IEventHandler<$name$>
{
public Task HandleAsync($name$ e, CancellationToken c)
{
$END$
}
}
True
constant("MyEvent")
0
True
2.0
InCSharpFile
True
True
创建仓储
True
constant("My")
0
True
True
2.0
InCSharpFile
ncprepo
True
public interface I$name$Repository : IRepository<$name$, $name$Id>;
public class $name$Repository(ApplicationDbContext context)
: RepositoryBase<$name$, $name$Id, ApplicationDbContext>(context),
I$name$Repository
{
}
True
True
endpoint data
True
epdat
True
static class $name$Data
{
$END$
}
True
constant("My")
0
True
2.0
InCSharpFile
True
True
command handler with result
True
cmdres
True
sealed class $name$ : ICommand<$name$Result>
{
}
sealed class $name$Result
{
}
sealed class $name$Handler : ICommandHandler<$name$, $name$Result>
{
public Task<$name$Result> ExecuteAsync($name$ cmd, CancellationToken c)
{
$END$
}
}
True
constant("MyCommand")
0
True
2.0
InCSharpFile
True
True
command handler
True
cmd
True
sealed class $name$ : ICommand
{
}
sealed class $name$Handler : ICommandHandler<$name$>
{
public Task ExecuteAsync($name$ cmd, CancellationToken c)
{
$END$
}
}
True
constant("MyCommand")
0
True
2.0
InCSharpFile
True
True
endpoint validator
True
epval
True
sealed class $name$Validator : Validator<$name$Request>
{
public $name$Validator()
{
$END$
}
}
True
constant("My")
0
True
2.0
InCSharpFile
True
True
global pre-processor
True
preproc_g
True
sealed class $name$ : IGlobalPreProcessor
{
public Task PreProcessAsync(object r, HttpContext ctx, List<ValidationFailure> fails, CancellationToken c)
{
$END$
}
}
True
constant("MyProcessor")
0
True
2.0
InCSharpFile
True
True
endpoint with response only
True
epres
True
sealed class $epName$Response
{
}
sealed class $epName$Endpoint : EndpointWithoutRequest<$epName$Response>
{
public override void Configure()
{
$verb$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken c)
{
$END$
}
}
True
constant("My")
0
True
constant("route-pattern")
2
True
constant("Get")
1
True
2.0
InCSharpFile
True
True
创建集成事件与事件处理器
True
constant("MyCreated")
0
True
True
2.0
InCSharpFile
ncpie
True
public record $name$IntegrationEvent();
public class $name$IntegrationEventHandler(IMediator mediator) : IIntegrationEventHandler<$name$IntegrationEvent>
{
public Task HandleAsync($name$IntegrationEvent eventData, CancellationToken cancellationToken = default)
{
// var cmd = new $name$Command(eventData.Id);
// return mediator.Send(cmd, cancellationToken);
throw new NotImplementedException();
}
}
True
True
创建领域事件处理器
True
constant("MyCreated")
0
True
True
2.0
InCSharpFile
ncpdeh
True
public class $name$DomainEventHandler(IMediator mediator)
: IDomainEventHandler<$name$DomainEvent>
{
public async Task Handle($name$DomainEvent notification,
CancellationToken cancellationToken)
{
// 实现业务逻辑
throw new NotImplementedException();
}
}
True
True
endpoint vertical slice - NCP
True
constant("Description text goes here...")
4
True
constant("My")
0
True
constant("route-pattern")
2
True
constant("Summary text goes here...")
3
True
constant("Post")
1
True
True
2.0
InCSharpFile
epp
True
sealed class $epName$Endpoint(IMediator mediator) : Endpoint<$epName$Request, ResponseData<$epName$Response>>
{
public override void Configure()
{
$verb$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync($epName$Request r, CancellationToken c)
{
var cmd = new $epName$Command(r.Property1, r.Property2);
var result = await mediator.Send(cmd, c);
var res = new $epName$Response();
await SendOkAsync(res.AsResponseData(), c);
$END$
}
}
sealed record $epName$Request();
sealed record $epName$Response();
sealed class $epName$Validator : Validator<$epName$Request>
{
public $epName$Validator()
{
// RuleFor(x => x.Property).NotEmpty();
}
}
sealed class $epName$Summary : Summary<$epName$Endpoint, $epName$Request>
{
public $epName$Summary()
{
Summary = "$summaryText$";
Description = "$descriptionText$";
}
}
True
True
pre-processor
True
preproc
True
sealed class $name$ : IPreProcessor<$req$Request>
{
public Task PreProcessAsync($req$Request r, HttpContext ctx, List<ValidationFailure> fails, CancellationToken c)
{
$END$
}
}
True
constant("MyProcessor")
0
True
constant("My")
1
True
2.0
InCSharpFile
True
True
创建集成事件转换器
True
constant("MyCreated")
0
True
True
2.0
InCSharpFile
ncpiec
True
public class $name$IntegrationEventConverter
: IIntegrationEventConverter<$name$DomainEvent, $name$IntegrationEvent>
{
public $name$IntegrationEvent Convert($name$DomainEvent domainEvent)
{
// return new $name$IntegrationEvent(domainEvent.Id);
throw new NotImplementedException();
}
}
True
True
endpoint mapper
epmap
True
sealed class $epName$Mapper : Mapper<$epName$Request, $epName$Response, $entity$>
{
public override $entity$ ToEntity($epName$Request r) => new()
{
$END$
};
public override $epName$Response FromEntity($entity$ e) => new()
{
};
}
True
constant("YourEntity")
1
True
constant("My")
0
True
2.0
InCSharpFile
True
True
endpoint vertical slice
True
constant("Description text goes here...")
5
True
constant("Summary text goes here...")
4
True
epfull
True
sealed class $epName$Endpoint : Endpoint<$epName$Request, $epName$Response, $epName$Mapper>
{
public override void Configure()
{
$verb$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync($epName$Request r, CancellationToken c)
{
$END$
}
}
sealed class $epName$Request
{
}
sealed class $epName$Response
{
}
sealed class $epName$Validator : Validator<$epName$Request>
{
public $epName$Validator()
{
}
}
sealed class $epName$Mapper: Mapper<$epName$Request, $epName$Response, $entity$>
{
public override $entity$ ToEntity($epName$Request r) => new()
{
};
public override $epName$Response FromEntity($entity$ e) => new()
{
};
}
sealed class $epName$Summary : Summary<$epName$Endpoint, $epName$Request>
{
public $epName$Summary()
{
Summary = "$summaryText$";
Description = "$descriptionText$";
}
}
True
constant("YourEntity")
3
True
constant("My")
0
True
constant("route-pattern")
2
True
constant("Post")
1
True
2.0
InCSharpFile
True
True
global post-processor
True
postproc_g
True
sealed class $name$ : IGlobalPostProcessor
{
public Task PostProcessAsync(object req, object? res, HttpContext ctx, IReadOnlyCollection<ValidationFailure> fails, CancellationToken c)
{
$END$
}
}
True
constant("MyProcessor")
0
True
2.0
InCSharpFile
True
True
test method
True
tstmethod
True
[Fact]
public async Task $test_name$()
{
$END$
}
True
constant("Name_Of_The_Test")
0
True
2.0
InCSharpFile
True
True
创建领域事件
True
constant("MyCreated")
0
True
True
2.0
InCSharpFile
ncpde
True
public record $name$DomainEvent() : IDomainEvent;
True
True
endpoint summary
True
epsum
True
sealed class $name$Summary : Summary<$name$Endpoint, $name$Request>
{
public $name$Summary()
{
Summary = "$summaryText$";
Description = "$descriptionText$";
$END$
}
}
True
constant("Description text goes here...")
2
True
constant("My")
0
True
constant("Summary text goes here...")
1
True
2.0
InCSharpFile
True
True
endpoint without request
True
epnoreq
True
sealed class $My$Endpoint : EndpointWithoutRequest
{
public override void Configure()
{
$Get$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken c)
{
$END$
}
}
True
1
True
0
True
2
True
2.0
InCSharpFile
True
True
endpoint with request & response
True
epreqres
True
sealed class $epName$Request
{
}
sealed class $epName$Response
{
}
sealed class $epName$Endpoint : Endpoint<$epName$Request, $epName$Response>
{
public override void Configure()
{
$verb$("$route$");
AllowAnonymous();
}
public override async Task HandleAsync($epName$Request r, CancellationToken c)
{
$END$
}
}
True
constant("My")
0
True
constant("route-pattern")
2
True
constant("Post")
1
True
2.0
InCSharpFile
True
True
创建实体配置类
True
ncpconfig
True
public class $Entity$Configuration : IEntityTypeConfiguration<$Entity$>
{
public void Configure(EntityTypeBuilder<$Entity$> builder)
{
builder.ToTable("$table$");
builder.HasKey(t => t.Id);
builder.Property(t => t.Id)
/*.UseSnowFlakeValueGenerator()*/ // 如果使用 SnowFlake ID 生成器,请取消注释
/*.UseGuidVersion7ValueGenerator()*/ // 如果使用 Guid Version 7 ID 生成器,请取消注释
;
// Configure other properties if needed
$END$
}
}
True
constant("Entity")
0
True
constant("table")
1
True
2.0
InCSharpFile