我正在尝试创建一个通用的 XML 到对象转换器。换句话说,以下是我的 XML
<setting>
<name>testing</name>
<type>System.String</type>
<defaultObj>TTTT</defaultObj>
</setting>
type 字段保存其加载回的对象的类型。这只是我在其中进行序列化的对象结构。无论如何,我在转换时遇到问题
System.String
变成一个实际的类型变量。因此,例如,为了转换我有以下代码:
foreach (XNode node in document.Element(root).Nodes())
{
T variable = new T(); //where T : new()
foreach (FieldInfo field in fields)
{
field.SetValue(variable, Convert.ChangeType(((XElement)node).Element(field.Name).Value, field.FieldType));
}
retainedList.Add(variable);
}
它以通用方式获取对象。该算法完美运行,直到遇到 Type 字段。我得到一个:
Invalid cast from 'System.String' to 'System.Type'.
运行时错误。据我所知,直接将类型标识符(字符串)直接转换为类型存在问题。我不确定如何解决这个问题,至少在保持通用和清洁方面是这样。有任何想法吗?如果问题有点模糊,我很抱歉,如果您不太了解,我会尝试进一步澄清。任何帮助是极大的赞赏!