[英]auto-generated code throw lots of warning in visual studio 2015
我最近将Visual Studio从2013年升级到2015年。现在,当我打开项目时,在自动生成的代码为CA2235的代码中看到了很多警告。
这是警告之一:
警告CA2235字段extensionDataField是WebServiceInputTrafficFinesInquiry类型的成员,该成员可序列化,但类型为System.Runtime.Serialization.ExtensionDataObject,不可序列化
SimpayRobot C:\\ Users \\ Admin \\ Desktop \\ Projects \\ SimpayRobot_SVN \\ trunk \\ SimpayRobot \\ SimpayRobot \\ Service References \\ RahvarService \\ Reference.cs 22
所有不能直接序列化的字段都应具有NonSerializedAttribute。 具有SerializableAttribute的类型不应具有不具有SerializableAttribute的类型的字段,除非这些字段用NonSerializedAttribute标记。
该项目工作正常,但使编程不舒服。 我不知道该怎么办。 它是自动生成的代码,我不想编辑它。
我如何摆脱这些警告? 还有一件事:警告是由于我向项目添加的肥皂服务参考。
更新:我不想抑制警告! 我为什么要这样做? 我想解决问题。
这是第22行:(这是自动生成的代码的一部分。)
[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
当我开始使用FxCops检查源代码时,我遇到了同样的问题。 从这篇文章开始我的调查,似乎reference.cs(由WCF-services自动生成)中的CA2235警告被归类为将在Visual Studio Update 3中解决的问题(请参阅此链接https://github.com/ dotnet / roslyn / issues / 3898,以获取更多信息)
关于JRB
字段/属性的类型ExtensionDataObject
不可序列化,但属于标记为serializable
的类的一部分。
您应该将ExtensionDataObject
标记为Serializable
,或者用NonSerializedAttribute
装饰。
例如,如果您尝试将对象存储在会话中,则它将无法序列化其所有属性,并且可能引发异常。
进一步了解警告。 它告诉您,一个字段(可能是隐式)标记为可序列化的,而其类型则不可序列化。 它告诉您将[NonSerialized]添加到该文件中。
您可以这样解决(我只是猜测您的代码可能是什么样子):
[Serializable]
public class WebServiceInputTrafficFinesInquiry
{
// ...
[NonSerialized]
ExtensionDataObject extensionDataField;
// ...
}
有关更多信息,请参见https://msdn.microsoft.com/zh-cn/library/ms182349.aspx 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.