C# 接受其他类(例SubscribeSCOLCreator)发出的信号
时间: 2024-09-10 17:19:24 浏览: 28
C#开发实战1200例(第2卷)源代码_C#_c#编程1200例_
5星 · 资源好评率100%
在C#中,接受其他类发出的信号通常是通过事件(Events)机制来实现的。事件是一种特殊的多播委托(Multicast Delegates),它允许一个对象向多个订阅者广播消息或通知。
要使一个类(例如 SubscribeSCOLCreator)发出信号,首先需要在该类中定义一个事件。然后,其他类可以通过订阅这个事件来响应发出的信号。这里是一个简单的示例:
1. 定义事件的委托类型,通常这个委托会遵循 `System.EventHandler` 的模式,或者自己定义一个带有两个参数的委托,第一个参数是发送者,第二个参数包含事件数据。
2. 在类中声明这个事件,并使用 `event` 关键字修饰。
3. 在其他类中,创建一个方法来处理这个事件(即事件处理器),这个方法需要符合委托的签名。
4. 使用 `+=` 操作符将事件处理器订阅到事件上。
以下是一个简单的代码示例:
```csharp
// 委托和事件的定义
public delegate void ItemAddedEventHandler(object sender, ItemEventArgs e);
public class ItemEventArgs : EventArgs
{
public string ItemName { get; set; }
}
public class SubscribeSCOLCreator
{
// 发出信号的事件
public event ItemAddedEventHandler ItemAdded;
// 当需要发出信号时调用的方法
protected virtual void OnItemAdded(string itemName)
{
ItemAdded?.Invoke(this, new ItemEventArgs { ItemName = itemName });
}
// 其他方法,可能会在某个条件下触发事件
public void AddItem(string itemName)
{
// ... 添加项目逻辑 ...
OnItemAdded(itemName);
}
}
// 其他类中
public class ItemListener
{
public ItemListener(SubscribeSCOLCreator creator)
{
// 订阅事件
creator.ItemAdded += HandleItemAdded;
}
// 处理事件的方法
private void HandleItemAdded(object sender, ItemEventArgs e)
{
Console.WriteLine($"新项目已添加: {e.ItemName}");
}
}
```
在这个例子中,`SubscribeSCOLCreator` 类定义了一个 `ItemAdded` 事件,它在添加新项目时被触发。`ItemListener` 类通过订阅 `ItemAdded` 事件来响应这个信号,并在其 `HandleItemAdded` 方法中处理事件。
阅读全文