作者:诺汐衹湜忲傻 | 来源:互联网 | 2023-05-23 12:12
假设我有一个以下的C#界面:
public interface IInterface where T : SomeClass
{
void InterfaceMethod();
}
而SomeClass的定义如下:
public class SomeClass
{
public void SomeMethod();
}
现在我想定义接口的实现,它不会编译:
public class InterfaceImpl : IInterface
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Gives Error
}
}
在我改为之前:
public class InterfaceImpl : IInterface where T : SomeClass
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Compiles fine
}
}
类型约束是否也从接口"继承"(不是正确的词,我知道)是否有意义?
1> dasblinkenli..:
该类不需要重复这些约束,它需要提供满足接口约束的类型.有几种方法可以做到:
它可以提供满足约束的特定类型,或
它可以将自己的约束放在比接口期望的更强的泛型类型上,或者
它可以重复界面的约束.
关键的一点是,T
在InterfaceImpl
属于InterfaceImpl
,使放置在任何限制T
必须是InterfaceImpl
自己的.