1

我有以下代码,请让我知道如何在运行时创建实例而不在编码时指定类型。

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)

创建实例。

4

1 回答 1

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为所有具有通用方法的泛型创建一个接口也会很好。

于 2013-06-14T04:52:39.323 回答