具有非通用接口的通用类

时间:2014-10-13 19:20:27

标签: c# generics interface

我有下一个界面:

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.

我的问题是,为什么在第一种情况下我的代码不起作用,在第二种情况下我的代码正在运行?这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以转换为接口,但是通用接口不允许您在泛型类型之间进行转换。

在你的情况下,你不能从布尔到字符串,但你可以这样做:

  IMyInterface x = new MyClass<String>();
  IMyInterface y = new MyClass<Boolean>();

  x = y;