如果我传递了一个实现接口的类的实例,我不一定知道确切的类型。如果我想创建这个类的数组(无论它是什么),我可以这样做:
IWhatever[] ArrayOfClass = (IWhatever[])Array.CreateInstance(InstanceOfClass.GetType(), length);
只要InstanceOfClass是实现IWhatever的类的实例,这就可以了。
问题是我似乎无法弄清楚如何初始化数组的成员。我认为new IWhatever()
可能有用,但事实并非如此。
如何构造数组成员?
答案 0 :(得分:2)
您需要将每个成员初始化为实现该接口的某个类的实例。
如果您想要与InstanceOfClass
相同的类型,并且该类型具有默认构造函数,则可以使用以下内容:
for(int i=0;i<ArrayOfClass.Length;++i)
{
ArrayOfClass[i] = (IWhatever)Activator.CreateInstance(InstanceOfClass.GetType());
}
答案 1 :(得分:0)
向界面添加工厂方法。工厂方法将创建一个实例 正确的特定类型,您根据其泛型类型指定为数组。