【发布时间】:2011-11-11 04:16:24
【问题描述】:
我正在为一个程序增加一些灵活性,因为它的目的现在已经改变了。我想添加一个现有类将实现的接口。
现有类
public class ClassA
{
#region Events
public delegate void DataReceivedHandler(object sender, EventArgs e);
public delegate void DataSentHandler(object sender, EventArgs e);
public delegate void StatusUpdatedHandler(object sender, EventArgs e);
public event DataReceivedHandler DataReceived;
public event DataSentHandler DataSent;
public event StatusUpdatedHandler StatusUpdated;
#endregion
//rest of code here...
}
新界面
public interface IClassA
{
event EventHandler DataReceived;
event EventHandler DataSent;
event EventHandler StatusUpdated;
//rest of code here...
}
我的三个问题如下。
第一季度。我首先在类中声明我自己的委托是正确的,即public delegate void DataReceivedHandler,还是应该删除这些委托并将事件替换为普通的EventHandler。即public event EventHandler DataReceived。鉴于这些事件没有通过事件传递数据,只是通知任何订阅的东西发生了变化。
第二季度。与上述问题密切相关。鉴于我正在更改类的属性,即状态(StatusUpdated)。将新状态作为自定义 EventArgs 传递是否是最佳做法,因此需要像原始代码中一样的自定义委托?由于它当前工作,事件被触发,并且订阅的类可以只使用发送者值,即(发送者作为 ClassA).Status。是否有最佳做法,还是仅取决于开发人员?
第三季度。现在这已经不可能了。关于接口的部分。我是否在接口中正确声明了 DataReceived 和其他事件,以匹配将被标记为实现它的类。
【问题讨论】:
标签: c# .net events interface delegates