gpt4 book ai didi

c# - 强制执行事件处理接线

转载 作者:太空狗 更新时间:2023-10-29 21:51:52 26 4
gpt4 key购买 nike

有没有办法执行事件处理接线的编译时执行?

例如,假设我有一个暴露标准 EventHandler<T> 的类我能否确保此类的任何实例化实例都具有 OnMyEvent处理程序,处理? (最好在编译时)

我能看到执行此操作的唯一方法是通过将事件处理程序作为对象构造函数的一部分或在运行时使用反射。有没有其他选择?

此外,如果 C# 不允许此功能;出于好奇,还有其他语言吗?

最佳答案

事件通常旨在供对象的调用代码使用可选 - 例如,作为观察者(或多个观察者) .很少强制处理事件。没有标准的语言/编译器构造来验证事件是否在编译时被订阅(我怀疑这会非常困难,因为您可以在代码中的任何时间、任何位置有效地订阅/取消订阅——可能多次,即 +HandlerA、+HandlerB、-HandlerA、-HandlerB - 以没有订阅者结尾)。

在您提出的场景中,需要,然后将其传递给构造函数听起来更合适,但我可能会使用 Func<...>Action<...>在这种情况下(不是 EventHandler<T> )。但这是主观的。

其他方法:

  • 使它成为一个抽象类并强制消费者进行子类化和override一个或多个abstract成员
  • 有一个interface消费者必须提供的参数

关于c# - 强制执行事件处理接线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com