相关疑难解决方法(0)

反序列化时,C#类中的字段初始化程序不运行

我有一个定义受保护字段的类.受保护的字段具有字段初始值设定项.

当我反序列化具体类时,不会运行字段初始值设定项.为什么?解决问题的最佳模式是什么?如果我将初始化移动到构造函数中,也不会调用构造函数.

[DataContract]
public class MyConcrete
{
    // FIELD INITIALIZER DOES NOT RUN WHEN COMMENTED IN:
    protected readonly Dictionary<int, string> myDict;// = new Dictionary<int, string>();

    public MyConcrete()
    {
        myDict = new Dictionary<int, string>();
    }

    private bool MyMethod(int key)
    {
        return myDict.ContainsKey(key);
    }

    private int myProp;

    [DataMember]
    public int MyProp
    {
        get { return myProp; }
        set { bool b = MyMethod(value); myProp = value; } // Call MyMethod to provoke error
    }
}
Run Code Online (Sandbox Code Playgroud)

原始类层次结构

[DataContract]
public abstract class MyAbstract
{ …
Run Code Online (Sandbox Code Playgroud)

c# serialization

28
推荐指数
2
解决办法
6165
查看次数

标签 统计

c# ×1

serialization ×1