C#内部委托和公共事件

Arn*_* F. 2 c# events delegates

我目前正在开发一个独立于任何应用程序的微小技术框架.业务代码只是引用此框架.

根据这篇文章:http://msdn.microsoft.com/en-us/library/5z57dxz2.aspx(例2),我们需要为自定义事件提供委托.

问题是,任何人都可以调用我的处理程序(然后引发事件),即使在我的业务代码中,这对我来说也不符合逻辑,那么使用仅仅是"内部"的委托来提升自定义事件的最佳方法是什么而不是"公开"?

感谢帮助.

dec*_*one 6

我不确定我是否正确.我认为,如果您为Delegate自定义活动提供公共类型,那么任何人都可以提升该活动.

嗯,那不是真的.只有定义该自定义事件的类才能引发它.如果这是您的问题,请不要担心.


Che*_*hen 5

不对。不允许在事件所属的类之外调用该事件。其他人只能使用+=-=操作员来参加您的活动。只有在类中,您才能调用该事件。这是事件和普通委托之间的区别。那是:

public Data
{
   public event EventHandler OnSave
   public EventHandler OnLoad;

   private void Load()
   {
       if (OnLoad!=null) OnLoad();  
       //other operations
   }
   private void Save()
   {
       if (OnSave!=null) OnSave();  
       //other operations
   }
}
Run Code Online (Sandbox Code Playgroud)

还有课外:

Data data = new Data();
data.OnLoad += (s,e) => {}; 
data.OnSave += (s,e) => {};
data.OnLoad = (s,e)=>{}; 
//data.OnSave = (s,e)=>{};  //invalid
data.OnLoad();
//data.OnSave();  //invalid
Run Code Online (Sandbox Code Playgroud)