【发布时间】:2015-04-05 17:57:30
【问题描述】:
假设我有以下 C# 接口:
public interface IInterface<T> where T : SomeClass
{
void InterfaceMethod();
}
而SomeClass的定义如下:
public class SomeClass
{
public void SomeMethod();
}
现在我想定义接口的实现,它不会编译:
public class InterfaceImpl<T> : IInterface<T>
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Gives Error
}
}
在我将其更改为之前:
public class InterfaceImpl<T> : IInterface<T> where T : SomeClass
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Compiles fine
}
}
类型约束也从接口“继承”(不是正确的词,我知道)不是有意义吗?
【问题讨论】:
-
如果没有指定,它们可能已经“默认”实现。但实际语法允许重新定义约束(继承、new() 关键字等),这很好。
标签: c# .net generics inheritance interface