【发布时间】:2014-08-17 15:23:46
【问题描述】:
您好,我很难解决以下问题。
我提供了两个参数
- 动态对象 (obj)(包含具有值的属性)
- 一个字符串 (typeName)(包含一个类型名称,可以是任何与一系列具体定义的类型相匹配的名称)。
请注意,obj 是动态的,因此我没有任何设计时访问其任何类型或属性的权限。
据此,我需要将此匿名对象转换为其具体类型,并使用对象中包含的值对其进行初始化并序列化。
我现在拥有的是这样的:
public class ExampleObj
{
public int A { get; set; }
public string B { get; set; }
}
static void Main(string[] args)
{
var typeName = "ExampleObj";
object obj = new
{
A = 5,
B = "xx"
};
Type type = Type.GetType(typeName);
var serialiser = new XmlSerializer(type);
var sb = new StringBuilder();
serialiser.Serialize(new StringWriter(sb), obj);
}
由于明显的原因,最后一行失败(运行时现在知道如何从类型对象转换为具体类型 ExampleObj,这就是我卡住的地方。
我还考虑过 Activator.CreateInstance 来动态创建一个实例,但我的知识和搜索并没有表明我如何在序列化之前用正确的值初始化这个实例。
【问题讨论】:
标签: c# serialization dynamic reflection types