假设我通过.NET框架的发射/反射功能生成了三个A,B和C类,并以以下方式发射对象:

class A
{
   B someField1;
   C someField2;
}


创建对象后,我需要初始化someField1和someField2:

A someObject;


这该怎么做? someObject类型是对象,但我不知道如何将其转换为动态创建的A类型并输入字段并对其进行初始化。预先感谢您的帮助。

最佳答案

您不能在代码中强制转换为动态创建的类型,因为编译器无法知道该类型。

您可以通过以下两种方式完成所需的操作:

// 1 - using reflection
// these will actually be your dynamically created objects...
object a = CreateA();
object b = CreateB();
System.Reflection.FieldInfo someField1 = a.GetType().GetField(
    "someField1",
    BindingFlags.Instance | BindingFlags.NonPublic);
someField1.SetValue(a, b);


要么

// 2 - using dynamic (C# 4)
dynamic a = CreateA();
dynamic b = CreateB();
a.someField1 = b;

10-07 15:57