为什么这种转换不起作用?
public interface IMyInterface
{
}
public interface IMyInterface2 : IMyInterface
{
}
public class MyContainer<T> where T : IMyInterface
{
public T MyImpl {get; private set;}
public MyContainer()
{
MyImpl = Create<T>();
}
public static implicit T (MyContainer<T> myContainer)
{
return myContainer.MyImpl;
}
}
当我使用我的类(class)时,会导致编译时错误:
IMyInterface2 myImpl = new MyContainer<IMyInterface2>();
无法从MyContainer的
<IMyInterface2
>转换为IMyInterface2 ... hmmmm 最佳答案
您不能定义对接口(interface)的隐式转换。因此,您的通用隐式操作对于接口(interface)将无效。参见blackwasp.co.uk
您可能只需要结束编写以下内容,而无需隐式魔术:
IMyInterface2 myImpl = new MyContainer<IMyInterface2>().MyImpl;
关于c# - 隐式运算符转换和泛型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2124756/