在运行时,我找到要从中创建实例的对象的类型:
string typeName = "myNamespace.type, assembly";
Type theType = Type.GetType(typeName);
// the type features a constructor w/o arguments:
object theInstance = Acivator.CreateInstance(theType);
这工作正常,在调试器中我可以看到所有属性值——我假设调试器使用反射?
我还有一个对象类型的动态反序列化对象,我知道它实际上是 theType 类型:
// pseudo code on the rhs of the "="
object deserialized = decoder.decode(serializedObject.body);
有没有一种方法可以分配deserialized
给theInstance
,而无需使用反射循环遍历类型的属性?由于这将是时间紧迫的:假设这样做的唯一方法是反射,有没有办法最小化性能损失?我确实希望在短时间内有很多这样的对象。
(这是 .Net 3.5,所以如果 Type dynamic 可以解决这个问题,在这种情况下就没有用了)。