我有一个接口,用于指定GetData方法,其通过它的ID返回类的一个实例的一类实例化它实现了一个通用接口
public interface ILabelData<T> {
T GetData(object id);
}
,也有许多不同类的那些谁实现接口,并具有部件当然是:
public class BTAC : ILabelData<BTAC> {
// members...
// and interface impl:
public BTAC GetData(object id) {
return null;
}
}
public class KTAC : ILabelData<KTAC> {
// members...
// and interface impl:
public KTAC GetData(object id) {
return null;
}
}
在一个调用方法中,我想实例化一个BTAC/KTAC/...类并调用它们的GetData方法。 (它的目的是becasue后,我有必要的情况下我想要得到它的成员和属性。获取成员和属性是不是我的问题的一部分。)
ILabelData<object> o = Activator.CreateInstance(type, new object[] { myID });
^^^^^^^^^^^^^^^^^^^^
object data = o.GetData(myID);
问题是编译器错误无法隐将类型'object'转换为'ILabelData'< object>'
在实例化正确的类课程后,
我怎样才能得到这样的对象?有些工厂或其他什么?
'CreateInstance'适用于单一类型的单个实例。它不会创建一个对象数组,而是创建一个对象数组。更重要的是,它返回一个“对象”。 –
@ haim770但它不是'List',它是一个类型的单个实例。 –
@ haim770不是真的 - 他试图获取的类型没有实现ILabelData