我尝试使用模板方法(foo1)中的方法(foo2),编译器说他不知道属于那个类(T)的这个方法(foo2).
什么是正确的语法,哪个编译器接受它?
private void foo1<T>(T instance)
{
instance.foo2();
}
Run Code Online (Sandbox Code Playgroud)
您应该在泛型类型上创建约束,如下面的代码片段所示:
private void foo1<T>(T instance) where T : IFoo
{
instance.foo2();
}
interface IFoo
{
void foo2();
}
Run Code Online (Sandbox Code Playgroud)
其中定义了封闭的泛型类型只能从IFoo接口派生.但是你为什么不坚持下面给出的非通用版本呢?
private void foo1(IFoo instance)
{
instance.foo2();
}
interface IFoo
{
void foo2();
}
Run Code Online (Sandbox Code Playgroud)