为什么我不能将泛型方法与这样的接口一起使用?
我的参数的接口
public interface IBaseParam {
string Name { get; }
}
public interface IComplexParam : IBaseParam {
string P1 { get; }
string P2 { get; }
}
使用泛型接口的类
public interface ILauncherCommand {
void launch<T>(T parameters) where T : IBaseParam;
}
public class BaseCommand : ILauncherCommand {
string Name { get; }
public void launch<T>(T parameters) where T : IBaseParam {
}
}
public class ComplexCommand : ILauncherCommand {
string Name { get; }
public void launch<T>(T parameters) where T : IComplexParam {
}
}
ComplexCommand.launch是编译器显示问题的地方(CS0425)。IComplexParam继承自IBaseParam,因此契约必须有效。
仅当声明泛型类时我才能编译,但我想使用泛型方法而不是完整的泛型类
下面的代码可以工作,但它是一个泛型类
public interface ILauncherCommand<T> where T : IBaseParam {
void launch(T parameters);
}
public class BaseCommand : ILauncherCommand<IBaseParam> {
string Name { get; }
public void launch(IBaseParam parameters) {
}
}
public class ComplexCommand : ILauncherCommand<IComplexParam> {
string Name { get; }
public void launch(IComplexParam parameters) {
}
}
RISEBY
相关分类