为什么从标准类型继承时会收到警告 CA2229(实现序列化构造函数)
Why do I get warning CA2229 (Implement serialization constructors) when inheriting from standard type
我有这样的 class 定义:
[Serializable]
public class MyDictionary: Dictionary<string, object>
{
}
但是,我收到此代码分析警告:
CA2229 Implement serialization constructors
Add a constructor to TcpFieldValueDictionary with the following signature:
'protected TcpFieldValueDictionary(SerializationInfo info, StreamingContext context)'.
不过,泛型字典已经有了构造函数,只是多了一个public
修饰符。
添加这个构造函数很容易(见下文),但为什么要这样做呢?有什么好处?
protected MyDictionary(SerializationInfo info, StreamingContext context)
: base(info, context)
{ }
构造函数不是继承的。你的基类型有什么构造函数并不重要 - 如果你想要一个具有特定签名的构造函数用于你的class,你必须实现一个。
否则,您只会获得默认的无参数构造函数。
我有这样的 class 定义:
[Serializable]
public class MyDictionary: Dictionary<string, object>
{
}
但是,我收到此代码分析警告:
CA2229 Implement serialization constructors Add a constructor to TcpFieldValueDictionary with the following signature: 'protected TcpFieldValueDictionary(SerializationInfo info, StreamingContext context)'.
不过,泛型字典已经有了构造函数,只是多了一个public
修饰符。
添加这个构造函数很容易(见下文),但为什么要这样做呢?有什么好处?
protected MyDictionary(SerializationInfo info, StreamingContext context)
: base(info, context)
{ }
构造函数不是继承的。你的基类型有什么构造函数并不重要 - 如果你想要一个具有特定签名的构造函数用于你的class,你必须实现一个。
否则,您只会获得默认的无参数构造函数。