我想要实例化完整的课程。
Activator.createInstance(type)
我创建了实例。 //in a1.dll
class class1
{
class2 var1;
//some Method
}
//in a2.dll
class class2
{
class3 var2;
//some Method
}
//in a3.dll
class class3
{
//some Method
}
我必须创建整个class1
类型的实例。
答案 0 :(得分:0)
所以你想创建一个包含其他类的类。
以下是您可以做的事情:
Activator
类以下代码可以帮助您开始处理此问题,但请仔细阅读,以及其下的非常重要的要点:
public class A
{
public B MyBProperty { get; set; }
public C MyCField;
}
public class B
{
public C MyCField;
}
public class C
{
}
public class Creator
{
static MethodInfo mi;
static Creator()
{
mi = typeof(Creator).GetMethod("Create");
}
public T Create<T>()
{
var createdType = Activator.CreateInstance<T>();
// assign all properties
foreach (var p in typeof(T).GetProperties())
{
try
{
var mig = mi.MakeGenericMethod(p.PropertyType);
p.SetValue(createdType, mig.Invoke(this, null));
}
catch
{
}
}
// assign all fields
foreach (var f in typeof(T).GetFields())
{
try
{
var mig = mi.MakeGenericMethod(f.FieldType);
f.SetValue(createdType, mig.Invoke(this, null));
}
catch
{
}
}
return createdType;
}
}
// to use it:
var c = new Creator();
var a = c.Create<A>(); // should be instantiated
现在有一些非常重要的要点:
有很多方法可以自动创建对象,这段代码不是一个可靠的例子,只是一个起点:如果你想了解更多,我建议你从{{读取代码3}}或任何其他自动对象创建框架。我希望它能帮助你找到正确的方向。