要说自定义异常是可序列化的,最低要求是什么?
我的解决方案的遗留代码中有一堆自定义异常。我想测试
我的项目中引入的所有自定义异常看看它们是否可序列化(XML)
那么,我的测试应该检查什么当自定义异常可序列化时传递?
自定义异常可序列化的最低要求是什么?
I have bunch of custom exceptions in my solution's legacy code. And I want to test all
the custom exceptions introduced in my projects to see if they are Serializable (XML)
So, what should my tests check to pass when a custom exception is serializable?
What are the least requirements to have to say that a custom exception is serializable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以检查所有异常类是否都实现 IXmlSerialized接口:
You can check if all your exception classes implement the IXmlSerializable interface:
Exception
基类公开了一个公共属性Data
,它实现了默认 .NET XML 序列化机制不支持的IDictionary
。因此,我相信,为了对异常进行 XML 序列化,您将被迫实现 IXmlSerialized 以便提供自定义 XML 序列化逻辑。
在此基础上,您可以检查您的类是否实现了该特定接口,就像 Frédéric 在他的回答中演示的那样。
The
Exception
base class exposes a public propertyData
which implementsIDictionary
which is not supported by the default .NET XML serialization mechanism.So I believe that in order for you to XML serialize an exception you will be forced to implement
IXmlSerializable
in order to provide custom XML serialization logic.Based on that you can check that your classes implement that specific interface, like Frédéric demonstrated in his answer.
我建议使用 xmlSerializer.CanDeserialize(..) 方法。
MSDN
I would suggest using xmlSerializer.CanDeserialize(..) method.
MSDN