ジェネリック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'.
ランタイムエラー。私が知る限り、タイプ識別子(文字列)を直接タイプに変換する際に問題が発生しています。少なくとも、物事を一般的でクリーンに保つことに関しては、この問題を回避する方法がわかりません。何か案は?問題が少し曖昧な場合は申し訳ありませんが、よくわからない場合はさらに明確にしようと思います。どんな助けでも大歓迎です!