私は任意の長さの型と値のペアのリストを必要とするクラスを持っています。シリアライズ型と値の組C#
たとえば、{(文字列、 "hello")、(int、3)}を保持するインスタンスと、{(char、 'a')}を保持するインスタンスがあります。型はこれまでのところ型になりますが、intとstringだけに制限できますが、柔軟性を保つためにfloat、charなどを含めることが可能です。
このクラスのインスタンスを直列化および逆シリアル化する必要があります。私の優先シリアル化は、System.Xml.Serialization.XmlSerializerを使用したXMLです。どちらのタプルやオブジェクトは、デフォルトでシリアル化しているため
Tuple<Type, object>
には良かったので、私は、カスタム構造体定義された:
[Serializable]
public struct ObjectDataItem { public Type Type; public string Value; }
をし、私のクラスは、(私が推測として、文字列値のために大丈夫だったObjectDataItemsのリストを保持していますとにかくどこかの型変換は不可避です)。
私の質問は、私がObjectDataItemを逆シリアル化する方法です(特に 'タイプ'変数をデシリアライズします)。
私は、現在のコードを使用してデシリアライズしています:
public static M LoadXML<M>(string fileName) where M : struct
{
if (File.Exists(fileName))
{
FileStream loadStream = new FileStream(fileName, FileMode.Open);
XmlSerializer serializer = new XmlSerializer(typeof(M));
M fileLoaded = (M)serializer.Deserialize(loadStream);
loadStream.Close();
return fileLoaded;
}
else throw new HException("File not found: {0}", fileName);
}
は[ハウツー-XMLシリアル化-型]の重複のように見えるようにあなたの
DataObjectItem
意志が見えます(https://stackoverflow.com/questions/290867/how-to -xml-serialize-a-type) – ASpirin