我的基本接口IFoo声明
event EventHandler Changed
当我'实现接口'时,我得到了一些遗留的样板代码,但是如何提供一个合适的默认实现呢?
add { throw new NotImplementedException(); }
remove { throw new NotImplementedException(); }
答案 0 :(得分:4)
接口如何使用事件名称前缀的接口名称声明事件?我不确定这是合法的C#。
如果没有“IFoo”就可以离开。前缀,只需在类中声明事件,让编译器为您创建默认的添加/删除操作。您应该担心的是触发事件的时间:
interface IFoo
{
event EventHandler OnChanged;
}
class MyClass : IFoo
{
public event EventHandler OnChanged;
private FireOnChanged()
{
EventHandler handler = this.OnChanged;
if (handler != null)
{
handler(this, EventArgs.Empty); // with appropriate args, of course...
}
}
}
...或者我误解了你从哪里继承这个事件?你的类派生自一个抽象基类,它又实现了一个接口(声明事件)?这可能是你的意思,但在问题中并不清楚。
答案 1 :(得分:2)
private EventHandler onChanged;
event EventHandler IFoo.OnChanged
{
add
{
onChanged += value;
}
remove
{
onChanged -= value;
}
}
答案 2 :(得分:0)