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