【发布时间】:2010-05-14 10:44:31
【问题描述】:
如果我有一个通过(例如)FrobbingEventArgs 引发事件的类,我是否可以使用采用 EventArgs 的方法来处理它?
这里有一些代码:
class Program
{
static void Main(string[] args)
{
Frobber frobber = new Frobber();
frobber.Frobbing += FrobberOnFrobbing;
frobber.Frob();
}
private static void FrobberOnFrobbing(object sender,
EventArgs e)
{
// Do something interesting. Note that the parameter is 'EventArgs'.
}
}
internal class Frobber
{
public event EventHandler<FrobbingEventArgs> Frobbing;
public event EventHandler<FrobbedEventArgs> Frobbed;
public void Frob()
{
OnFrobbing();
// Frob.
OnFrobbed();
}
private void OnFrobbing()
{
var handler = Frobbing;
if (handler != null)
handler(this, new FrobbingEventArgs());
}
private void OnFrobbed()
{
var handler = Frobbed;
if (handler != null)
handler(this, new FrobbedEventArgs());
}
}
internal class FrobbedEventArgs : EventArgs { }
internal class FrobbingEventArgs : EventArgs { }
我问的原因是 ReSharper 似乎对 XAML 中的等效项有问题(看起来像),我想知道这是 ReSharper 中的错误,还是我对 C# 的理解有误。
【问题讨论】:
-
这是一个很好的 frobnication 例子 :)
标签: c# events contravariance