我有下一个界面:
interface IMyInterface
{
string Message { set; get; }
}
我的通用课程:
public class MyClass<T> : IMyInterface
{
public T item;
public string Message{ set; get; }
}
我需要在不同的泛型类之间进行转换,例如:
MyClass<String> myClassString = new MyClass<String>();
MyClass<Boolean> myClassBoolean = new MyClass<Boolean>();
myClassString = (IMyInterface)myClassBoolean; //This code not working.
myClassString = (MyClass<String>)(IMyInterface)myClassBoolean // This code working.
我的问题是,为什么在第一种情况下我的代码不起作用,在第二种情况下我的代码正在运行?这样做的最佳方法是什么?
答案 0 :(得分:1)
您可以转换为接口,但是通用接口不允许您在泛型类型之间进行转换。
在你的情况下,你不能从布尔到字符串,但你可以这样做:
IMyInterface x = new MyClass<String>();
IMyInterface y = new MyClass<Boolean>();
x = y;