zoukankan      html  css  js  c++  java
  • WCF反序列化,不会调用构造函数,如何解决类的初始化问题

    WCF反序列化,不会调用构造函数,如何解决类的初始化问题?遇到了这个问题,找了一些资料最终解决了这个问题。关键是两个特性:

    [OnDeserializing] 

    [OnDeserialized]

    看一下代码:

       [DataContract]
        public class MyDataType
        {
            [DataMember]
            private List<int> nVal = new List<int>();
            public MyDataType()
            {
                nVal.Add(12);
            }
    
            [OnDeserializing]
            void BeginInit(StreamingContext sc)
            {
                Console.WriteLine("same to begin Constructor");
            }
    
            [OnDeserialized]
            void EndInit(StreamingContext sc)
            {
                Console.WriteLine("same to end Constructor");
            }
    
            [DataMember]
            public int InitMemberData
            {
                get { return 0; }
                set {
                    object obj = this;
                    Console.WriteLine("InitMemberData: set.");
                }
            }
    
            private int intv;
            [DataMember]
            public int INT
            {
                get
                {
                    return intv;
                }
                set
                {
                    Console.WriteLine("INT: set.");
                    if(nVal == null)
                        intv = value;
                }
            }
            string _str;
            [DataMember]
            public string STRING
            {
                get { return _str; }
                set {
                    Console.WriteLine("STRING: set.");
                    _str = value; 
                }
            }
            long _long;
            [DataMember]
            public long LONG
            {
                get { return _long; }
                set 
                {
                    Console.WriteLine("LONG: set.");
                    _long = value; 
                }
            }
           
        }
    

      反序列化时的输出:

  • 相关阅读:
    记事本:js简介
    python 类的魔法函数 内置函数 类方法 静态方法 抽象类
    python 类
    python 列表 元组 字典 集合
    python:函数和循环判断
    记事本:盒模型
    第5章学习小结
    倍增法求LCA(最近公共最先)
    L
    第4章学习小结
  • 原文地址:https://www.cnblogs.com/hongsheng001/p/4459509.html
Copyright © 2011-2022 走看看