很抱歉询问看起来像这么明显的问题.
我有一个类型为T的"适配器"泛型类,其中T是一个已定义的接口.我想在该类中创建一个方法,该方法采用不同类型的通用适配器.
public interface ICommon { }
public class TypeOne : ICommon { }
public class TypeTwo : ICommon { }
public class Adapter<T> where T : ICommon
{
void TakeAnotherType(Adapter<S> other)
{ }
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个编译错误Cannot resolve symbol 'S'.
我希望能够做到;
MyOne one = new Adapter<TypeOne>();
MyTwo two = new Adapter<TypeTwo>();
one.TakeAnotherType(two);
Run Code Online (Sandbox Code Playgroud)
如果我改变方法Adapter<T>然后它抱怨"两个"不是类型Adapter<TypeOne>
void TakeAnotherType<S>(Adapter<S> other) where S:ICommon
{ }
Run Code Online (Sandbox Code Playgroud)
因为泛型类型T的Adapter被约束ICommon,这也限制是很重要的S以同样的方式,因为这是用作通用型的Adapter<T>,所以它也必须满足ICommon约束.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |