我正在写一个代表网格的类;该列表中的顶点列表和索引列表。此类是不可变的,并在构造时进行验证。但是,我还想对反序列化强制执行验证,例如通过WCF接收网格或从文件中读取网格。我使用[OnDeserialized]来调用相同的验证方法,如果失败则抛出一个SerializationException,但是在OS X上运行Mono上的单元测试时,它将SerializationException包装在一个TargetInvocationException中,而ExpectException属性并没有将它接收到这样,测试失败了。
这可能是Mono中的一个错误,但它让我感到疑惑,我是否正确地做到了这一点?这样做的首选方式是什么?
在属性中进行验证不会起作用,因为任何一个属性都依赖于另一个属性进行验证;确保指数在范围内,三角形不退化等等。
谢谢。