我有以下代码,请让我知道如何在运行时创建实例,而无需在编码时指定类型。
MyObject productobject = something.
我需要类型
的对象 AccessValuesFrom<long,double>,AccessValuesFrom<long,string>..etc
通常我可以在下面创建对象:
AccessValuesFrom<long,double> accessData=productobject.ElementInfo.GetAccessValues<double>(something, something);
但我在运行时需要AccessValuesFrom。 long是预先定义的。当没有直接创建实例的方法时,如何为这种类型创建实例(我的情况我必须调用
) productobject.ElementInfo.GetAccessValues<double>(something, something)
创建实例。
答案 0 :(得分:3)
如果此时有Type
个对象,可以像这样实现GetAccessValues
:
object GetAccessValues(Type type, something, something)
{
var result = Activator.CreateInstance(
typeof(AccessValuesFrom<,>).MakeGenericType(typeof(long), type));
//do something with something
return result;
}
也可以使用常用方法为所有通用AccessValuesFrom
创建一个接口。