【发布时间】:2012-01-03 14:48:00
【问题描述】:
我有: - 一个接口:IMyType - 一些实现它的类:MyType1、MyType2、MyType3
如何定义 IMyType 类型的列表?
var myList = new List<Type> {typeof (MyType1), typeof (MyType2)};
上面的列表不强制类型为IMyType类型,我可以添加任何类型到列表中
【问题讨论】:
我有: - 一个接口:IMyType - 一些实现它的类:MyType1、MyType2、MyType3
如何定义 IMyType 类型的列表?
var myList = new List<Type> {typeof (MyType1), typeof (MyType2)};
上面的列表不强制类型为IMyType类型,我可以添加任何类型到列表中
【问题讨论】:
简单
List<IMyType> list = new List<IMyType>();
不需要任何花哨的东西就能解决问题
【讨论】:
class Program
{
static void Main(string[] args)
{
IList<IMyType> lst = new List<IMyType>();
lst.Add(new MyType1());
lst.Add(new MyType2());
lst.Add(new MyType3());
foreach (var lstItem in lst)
{
Console.WriteLine(lstItem.GetType());
}
}
}
public interface IMyType { }
public class MyType1 : IMyType { }
public class MyType2 : IMyType { }
public class MyType3 : IMyType { }
如果你想确定什么是实现类,你可以使用 obj.GetType() 或操作符 obj is MyType1
【讨论】: