2011-04-23 70 views
2

我可以为int成员创建getter和setter。如果这个成员是一个事件类型如何做到这一点?如何在c#中封装事件类型成员?

更新:我想每次设置此成员时调用另一个方法。

+0

你的意思是委托类型? – Oded 2011-04-23 16:14:55

+0

是的,但这是一个事件 – user310291 2011-04-23 16:39:25

+0

请阅读Jon Skeet对此的评论:http://csharpindepth.com/Articles/Chapter2/Events.aspx。特别要注意线程安全部分。 – 2011-04-23 17:12:20

回答

4

活动其实都是准备食用,非常简单的说,声明的事件实际上是定义基础委托一个getter/setter和因此没有必要定义明确的getter/setter。

如果你想要做某种自定义处理的连接/处理该事件的分离,那么你可以看看下面的MSDN文档

http://msdn.microsoft.com/en-us/library/bb882534.aspx

http://msdn.microsoft.com/en-us/library/z4ka55h8.aspx

+0

谢谢你看看他们:也许这就是我需要的。每次设置此成员时,我都想调用另一个方法。 – user310291 2011-04-23 16:38:06

+0

虽然看不到如何http://stackoverflow.com/questions/5765515/how-to-call-a-method-when-adding-an-event-in-c-using-custom-event-accessors – user310291 2011-04-23 16:45:54

+0

@ user310291,我为你引用的新问题添加了一个答案。 – 2011-04-23 17:20:37

2

使用委托类型声明事件 - 只需使您的属性成为委托类型即可。

MSDN

在.NET Framework类库中,事件是基于EventHandler委托和EventArgs的基类。

public EventHandler MyEvent {get; set;} 
+0

每次设置此成员时,我都想调用另一个方法。如果我使用这种语法,我不能。 – user310291 2011-04-23 16:38:33

6

你可以实现custom event accessors

例子:

public delegate int DoSomething(); 
private event DoSomething _somethingHappened; 
public event DoSomething SomethingHappened 
{ 
    add { _somethingHappened += value; } 
    remove { _somethingHappened -= value; } 
}