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

doe*_*man 1 c# code-analysis visual-studio-2012

我有这样的类定义:

[Serializable]
public class MyDictionary: Dictionary<string, object>
{
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

    protected MyDictionary(SerializationInfo info, StreamingContext context)
        : base(info, context)
    { }
Run Code Online (Sandbox Code Playgroud)

Dam*_*ver 8

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

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