• 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; 
                }
            }
           
        }
    

      反序列化时的输出:

  • 相关阅读:
    记一次HDP3.1 spark创建表hive读不到,hive创建表spark读不到
    千锋Django学习笔记
    UE4玩具项目存到Github
    mac中安装软件,提示“恶意软件”字眼的
    python基础之列表 Teddy
    数据库锁的分类
    23种设计模式
    swagger常用注解
    python安装
    点击div外部 执行方法
  • 原文地址:https://www.cnblogs.com/hongsheng001/p/4459509.html
Copyright © 2020-2023  润新知