gpt4 book ai didi

exception - 派生自异常类警告 : CA2237: Mark ISerializable types with SerializableAttribute

转载 作者:行者123 更新时间:2023-12-04 01:54:57 25 4
gpt4 key购买 nike

我从各种异常派生了几个类。现在 VS 在这个问题的标题中给出警告。

  • 有人可以解释压制这条规则的含义吗?
  • 你能解释一下来自 here 的规则吗?说“不要禁止针对异常类发出此规则的警告,因为它们必须可序列化才能跨应用程序域正确工作。”?

  • 附言嗯,我自己有一个答案。您确实必须将异常标记为可序列化。在同一个 AppDomain 中,如果没有此属性,它们可以正常工作。但是,如果您尝试从其他某个域捕获它,则必须对其进行序列化才能跨越应用程序边界。这就是我为此找到的主要原因。

    最佳答案

    这不完全是 Visual Studio 警告,而是 FxCop 工具生成的警告。您可以从 VS 分析菜单运行。 FxCop 是一个静态分析器,用于在 .NET 程序中查找编译器不会标记的常见问题。它的大部分警告都非常晦涩,很少是真正严重的问题,您需要将其视为“您是否考虑过这个问题?”一种工具。

    它试图在这里提醒您的一个小事实是 Exception 类实现了 ISerializable 并具有 [Serializable] 属性。这是一个非常困难的要求,它使基本 Exception 对象可以跨应用程序域序列化。必需,因为 Exception 不是从 MarshalByRefObject 派生的。并且有必要允许您在另一个应用程序域中运行的代码抛出您可以捕获的异常。

    所以 FxCop 指出您没有为自己的 Exception 派生类做同样的事情。如果您打算在另一个应用程序域中运行抛出异常的代码,这实际上只是一个问题。 FxCop 在其他方面不够聪明,无法知道您是否这样做了,它只能提醒您这样做时出错了。这是非常罕见的,所以当你还不知道你是否愿意,或者这一切对你来说是否听起来像中文时,请随意忽略警告。

    关于exception - 派生自异常类警告 : CA2237: Mark ISerializable types with SerializableAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11327404/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com