假设我有这样的类和接口结构:
interface IService {}
interface IEmailService : IService
{
Task SendAsync(IMessage message);
}
class EmailService : IEmailService
{
async Task SendAsync(IMessage message)
{
await ...
}
}
interface ICircuitBreaker<TService> : IService where TService : IService
{
TService Service { get; set; }
Task<IResult> PerformAsync(Func<Task<Iresult>> func);
}
class EmailServiceCircuitBreaker : ICircuitBreaker<IEmailService>
{
IEmailService Service { get; set; }
public EmailServiceCircuitBreaker(IEmailService service)
{
Service = service;
}
public async Task<IResult> PerformAsync(Func<Task<Iresult>> func)
{
try
{
func();
}
catch(Exception e){//Handle failure}
}
} …Run Code Online (Sandbox Code Playgroud)