当前位置: 首页 > 编程语言 > C#

自定义代码契约异常消息分享

时间:2023-04-10 21:12:53 C#

自定义代码契约异常消息我有一个代码契约表示为——它验证要存储的实体不为null并且对持久化有效。有用。棒极了。[ContractClassFor(typeof(IRepository))]内部抽象类ContractsForIRepository:IRepositorywhereT:IEntity{privateContractsForIRepository(){}publicTPersist(Tentity){Contract.Requires(entity!=null,"Entityisnull");Contract.Requires(entity.IsValidForPersistence(),"实体对持久性无效");返回默认值(T);但是,我希望异常更有用——因为收到消息的任何人都想知道哪个实体无效,它看起来像什么。所有实体都会覆盖ToString(),因此我想在错误消息中包含此内容:Contract.Requires(entity.IsValidForPersistence(),"Entitynotvalidforpersistence"+entity.ToString());我已将ToString包含为Explicit-如果我省略它,则它被隐式调用,但我认为这使我的问题更清楚。问题是,代码合同不允许这样做,我收到以下消息。合约调用的用户消息只能是字符串文字,或静态字段,或至少是内部可见的静态属性。有没有办法在异常消息中包含特定数据?根据文档:2.10合同方法重载除了布尔条件,所有合同方法都有接受字符串的重载:Contract.Requires(x!=null,"Ifxisnull,thenthemissilesarered!");只要在运行时违反约定,就会显示用户提供的字符串。目前,它必须是编译时常量。所以,你所要求的是不可能的。以上就是C#学习教程:自定义代码契约异常消息分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:

猜你喜欢