c# - 在引发事件的方法上编写代码契约

标签 c# events code-contracts

我正在使用事件的接口(interface)上编写代码契约:

interface EventInterface<T> {
    event EventHandler ItemAdded;
    bool Add(T item);
}

当一个项目被添加到一个实现该接口(interface)的集合中时,该集合必须引发一个ItemAdded事件。 只有在添加项目时才必须引发该事件; 这是由返回值给出的(想想一个集合,其中 true 表示该项目已添加,false 表示未添加,因为它已经存在于集合中) .

我希望有一个契约(Contract),确保如果结果为真,将引发一个事件。 同样,如果结果为假,则不会引发任何事件。 有没有办法使用契约(Contract)来检查?

最佳答案

这不是代码契约的设计目的。使用接口(interface)契约,您只能指定有关接口(interface)方法的参数返回值的详细信息。

您可能想要编写一个包含事件逻辑的抽象基类,或者您可以为此设置一些单元测试

关于c# - 在引发事件的方法上编写代码契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591107/

相关文章:

c# - 代码约定如何处理异常

c# - 如何在 Queue<byte> 中搜索字节并提取数据包?

c# - 返回接口(interface)的通用方法

c# - C# 中的舍入函数

C中的契约(Contract)设计模式

c# - 我如何使用代码契约来检查 Lazy<T> 的值而不失去惰性求值的优势?

c# - 获取 Schedule 和 Material Takeoff 的所有参数

events - 事件监听器的实现——汇编与高级语言

javascript - 无法在 Safari 中选择文本

node.js - 捕捉 Ctrl-C 在 Node 中如何工作?