不允许我从 class 以外的地方发起活动

Won't let me call an event from outside the class

在我的 class 我有:

public event WrDatabase.LoadStatus loadStatus;

我可以在 class 的方法中调用它。但是当我在外面时:

if (datasource.loadStatus != null)
    datasource.loadStatus.Invoke(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);

我得到:

出于某种原因,我需要将其推入 class 吗?

您收到的错误消息是正确的。

event 是围绕 delegate 字段的某种语法糖,以确保它被用作 broadcaster/subscriber 模式.

从广播者 class 的外部,event 只允许使用 +=-= 访问器订阅和取消订阅。 Invoke 方法不为外部所知,以确保只有广播者 class 可以调用该事件。它还确保外部世界无法清除订阅者。

如果您真的想这样做,您需要使用 delegate 而不是 event。更改类型,您的代码应该可以工作。

作为旁注。此代码:

datasource.loadStatus(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);

实际上确实调用了 Invoke 方法:

datasource.loadStatus.Invoke(WrDatabase.TYPE.SFORCE_COLLECTION, SObjectName);