gpt4 book ai didi

c# - .NET 事件 - 阻止订阅者订阅事件

转载 作者:太空狗 更新时间:2023-10-29 18:33:34 29 4
gpt4 key购买 nike

假设我有一个“处理器”接口(interface)公开一个事件 - OnProcess。通常实现者进行处理。因此我可以安全地订阅这个事件并确保它会被触发。但是一个处理器不进行处理——因此我想阻止订阅者订阅它。我可以这样做吗?换句话说,在下面的代码中,我希望最后一行抛出异常:

var emptyProcessor = new EmptyProcessor();
emptyProcessor.OnProcess += event_handler; // This line should throw an exception.

最佳答案

class EmptyProcessor : IProcessor {

[Obsolete("EmptyProcessor.OnProcess should not be directly accessed", true)]
public event EventHandler OnProcess {
add { throw new NotImplementedException(" :( "); }
remove { }
}
}

在这种情况下,Obsolete 上的 true 参数会导致编译时异常。所以:

EmptyProcessor processor1 = new EmptyProcessor();
IProcessor processor2 = new EmptyProcessor();

processor1.OnProcess += handler; // <-- compile-time error
processor2.OnProcess += handler; // <-- run-time error

关于c# - .NET 事件 - 阻止订阅者订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283013/

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