日期:2014-05-19  浏览次数:20951 次

请教一个放射的问题。。。关于动态创建数组类新的问题。
public   class   TradeItemDocumentType  
{
      public   EntityIdentificationType[]   tradeItemDocumentIdentification;
      public   TradeItemType[]   tradeItem;
      public   ExtensionType[]   extension;
      public   int[]   count;
      public   string[]   name;
}
//枚举类型
public   enum   ExtensionType  
{
        ACOUSTO_MAGNETIC_EAS_TAG,
        ELECTRO_MAGNETIC_EAS_TAG,
        INK_OR_DYE_EAS_TAG,
        MICROWAVE_EAS_TAG,
        RADIO_FREQUENCY_EAS_TAG,
}

请问大家怎么利用放射动态的创建TradeItemDocumentType类新的实例
并且把TradeItemDocumentType里面的对象都实例化。。。


------解决方案--------------------
try

oldobj.InvokeMember( "myProperty ",BindingFlags.SetField, null, this , new Object[] {a}

------解决方案--------------------
Array a = Array.CreateInstance(temp,1);
object otemp1 = System.Activator.CreateInstance(temp);
t.InvokeMember(fi.Name,BindingFlags.SetField, null, o, new Object[]{a});

---------------------------------------------
改成:
Array a = Array.CreateInstance(temp.GetElementType(), 1);
object otemp1 = System.Activator.CreateInstance(temp.GetElementType());
a.SetValue(otemp1, 0);
fi.SetValue(o,a);

------解决方案--------------------
基于类型的动态生成至少有三种基本技术

1 Reflect 反射
2 Emit 反射发出、放射
3 CodeDom 代码生成
------解决方案--------------------
各楼都给出了反射的例子。
却没有Emit的例子