在visual studio 2015中,自动生成的代码抛出了很多警告
本文关键字:警告 代码 studio visual 2015 自动生成 | 更新日期: 2023-09-27 18:15:18
我最近将我的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' References .cs 22
所有不能直接序列化的字段都应该具有NonSerializedAttribute。具有SerializableAttribute的类型不应该具有不具有SerializableAttribute的类型的字段,除非这些字段被标记为NonSerializedAttribute。
该项目工作得很好,但它使编程不舒服。我不知道该怎么办。它是自动生成的代码,我不想编辑它。
我怎样才能摆脱这些警告?还有一件事:警告是因为我添加到项目中的soap服务引用。
更新: 我不想压抑这个警告!我为什么要这么做?我想解决这个问题。
下面是第22行:(它是自动生成代码的一部分)[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
当我开始使用FxCops检查源代码时,我遇到了同样的问题。从我对这篇文章的调查开始,似乎reference.cs中的CA2235警告(由WCF-services自动生成)被归类为将在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;
// ...
}