在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;

在visual studio 2015中,自动生成的代码抛出了很多警告

当我开始使用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;
    // ...
}