c# - 一个事件监听器是否可以被限制为只有一个订阅者?

标签 c# exception events

是否可以阻止多个订阅者订阅一个事件?

我创建了一个快速示例片段来为我的问题提供一些背景信息,但遗憾的是我现在无法对其进行测试,因为我不在我的 VS 机器旁。

目标是:

  • 如果没有订阅者则返回一个空列表。
  • 返回单个订阅者的返回值。
  • 如果有多个订阅者尝试订阅该事件,则抛出异常(这是问题的关键)。

这可能吗?

public delegate List<IBaseWindow> GetWindowListDelegate();
public static event GetWindowListDelegate GetWindowListEvent;

public List<IBaseWindow> GetWindowList() {

    if (GetWindowListEvent == null) {
        return new List<IBaseWindow>();
    }

    return GetWindowListEvent();
 }

注意:我使用的是 .NET 3.5 sp1。

最佳答案

听起来您不需要事件 - 只需公开委托(delegate)本身并允许调用者自行设置委托(delegate)引用即可。

关于c# - 一个事件监听器是否可以被限制为只有一个订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078175/

相关文章:

c# - ASP.Net Core 中的日历

c# - 使用 C# 安装 MySQL 实例(和架构)

Python:返回错误而不是抛出错误

c# - 如何删除C#中DataGridView的默认第一行?

c# - Geckofx-Core - System.DllNotFoundException

PHP:异常与错误?

python - 如何从loop.sock_recv()函数捕获连接重置错误?

javascript - 通过ajax存储数据然后访问该URL

c++ - QComboBox EventFilter 弹出

javascript - 处理父网页中的 iFrame 事件