我该怎么办?
我有一个方法,我需要说它的泛型类型必须是类泛型类型的父类。
这里是一个例子:
class Logger : ILogger, IStartable {}
///use
new FluentBuilder<Logger>().As<ILogger>().As<IStartable>();
这显示了我的意图,但是不起作用(因为它在语法上不是错误的):
public class FluentBuilder<TService> where TService : class
{
public FluentBuilder<TService> As<TContract>() where TService : TContract
{
return this;
}
}
答案 0 :(得分:0)
这不完全是您想要的,但也许是朝正确方向迈出的一步。您可以将As方法实现为扩展方法:
public static class Ex
{
public static FluentBuilder<TService> As<TService, TContract>(this FluentBuilder<TService> that)
where TContract : class
where TService : class, TContract
{
return that;
}
}
使用语法如下:
new FluentBuilder<Logger>().As<Logger, ILogger>().As<Logger, IStartable>();