在我的课堂上,我有:
public event WrDatabase.LoadStatus loadStatus;
我可以在类中的方法内部调用它。但是当我有外面时:
if (datasource.loadStatus != null)
datasource.loadStatus.Invoke(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);
我得到:
由于某种原因,我是否需要将此课程推入课堂?
您收到的错误消息是正确的。
Anevent
是一种围绕delegate
领域的语法糖,以确保将其用作广播方/订户模式。
从广播类的外部,event
仅允许使用+=
和-=
访问者订阅和取消订阅。Invoke
从外部无法得知该方法,以确保仅广播者类可以调用该事件。它还可以确保外界无法清除订阅者。
如果您确实要这样做,则需要使用delegate
而不是event
。更改类型,您的代码应该可以正常工作。
作为旁注。这段代码:
datasource.loadStatus(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);
实际上确实调用了该Invoke
方法:
datasource.loadStatus.Invoke(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句