繁体   English   中英

自动生成的代码在Visual Studio 2015中引发很多警告

[英]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。 具有Seri​​alizableAttribute的类型不应具有不具有Seri​​alizableAttribute的类型的字段,除非这些字段用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM