0

NetDataContractSerializerシリアライゼーション/デシリアライゼーションに使用しています。Employee オブジェクトを含む辞書をシリアル化しました

今、私は従業員オブジェクトを変更し、ブール値フィールド IsManager を含めました。
しかし、xml のデシリアライズ中に以下のエラーが発生します。

行 1 の位置 1676 にエラーがあります。名前空間 ' http://schemas.datacontract.org/2004/07/ ..'からの 'Element' ' x003C ....' は想定されていません。要素 ' x003C ....' が必要です。

[DataMember(IsRequired = false)]IsManager フィールドの属性と同様に試しまし[XmlElement(IsNullable=true)]たが、問題は解決しませんでした。

従業員クラス

public Class Employee
{
public string FirstName{get;set;}
public string LastName{get;set;}
public bool IsManager{get;set;}
}

Employee クラスはディクショナリでシリアル化され、ディクショナリ (xml) から読み取られます。以下のコードを使用しています。

internal static IDictionary<TKey, TValue> DeserializeData<TKey, TValue>(string xml) where TValue : class
        {
            if (xml == null || xml.Equals(string.Empty))
            {
                return null;
            }

            IDictionary<TKey, TValue> dictionary = null;
            var deserializer = new NetDataContractSerializer
                {
                    AssemblyFormat = FormatterAssemblyStyle.Simple
                };

            var sr = new StringReader(xml);
            using (XmlReader reader = XmlReader.Create(sr))
            {
                try
                {
                    dictionary = deserializer.ReadObject(reader) as IDictionary<TKey, TValue>;
                }
                catch (Exception e)
                {
                    Trace.WriteLine(
                        string.Format(
                            CultureInfo.InvariantCulture, "Exception during de-serialization of data: {0}", e.Message));
                }
            }

            return dictionary;
        }
4

0 に答える 0