为什么在继承标准类型时会收到警告CA2229(实现序列化构造函数)

时间:2015-06-15 07:23:25

标签: c# visual-studio-2012 code-analysis

我有这样的课程定义:

[Serializable]
public class MyDictionary: Dictionary<string, object>
{
}

但是,我收到此代码分析警告:

  

CA2229实现序列化构造函数   使用以下签名向TcpFieldValueDictionary添加构造函数:   'protected TcpFieldValueDictionary(SerializationInfo info,StreamingContext context)'。

但是,通用字典已经具有构造函数,只有public修饰符。

添加此构造函数很容易(见下文),但为什么要这样做呢?有什么好处?

    protected MyDictionary(SerializationInfo info, StreamingContext context)
        : base(info, context)
    { }

1 个答案:

答案 0 :(得分:8)

构造函数不是继承的。基类型的构造函数没有关系 - 如果你想要一个具有特定签名的构造函数,你必须实现一个。

否则,您只需获取默认的无参数构造函数。