C#如何在DLL中公开事件

C#如何在DLL中公开事件,c#,api,events,dll,delegates,C#,Api,Events,Dll,Delegates,我有一个DLL,需要公开“事件订阅”,以便使用我的DLL的应用程序可以订阅特定事件以获取数据。(DLL本身订阅SDK中的事件) 我是个新手,所以请对我温和一点,并解释一下 我有一个DLL,例如如下所示: internal class BaseClass { } internal Class DerivedClass : BaseClass, InterfaceClass { public event TrackingEventHandler NewTrackingEventObservati

我有一个DLL,需要公开“事件订阅”,以便使用我的DLL的应用程序可以订阅特定事件以获取数据。(DLL本身订阅SDK中的事件) 我是个新手,所以请对我温和一点,并解释一下

我有一个DLL,例如如下所示:

internal class BaseClass
{
}
internal Class DerivedClass : BaseClass, InterfaceClass
{
  public event TrackingEventHandler NewTrackingEventObservations; 
  public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);
}
在我的界面中,我想公开委托
TrackingEventHandler

接口:

public interface InterfaceClass
{
  event TrackingEventHandler NewTrackingEventObservations; // <- Error: TrackingEventHandler is less accessable then the field NewTrackingEventObservations
}
公共接口接口类
{

event TrackingEventHandler NewTrackingEventObservations;//您得到的错误是因为
TrackingEventHandler
包含在
内部的类中(仅可由同一程序集中的文件访问,请参见此),但您试图公开的接口是
public
。您可以将包含的类设置为public,也可以在此类之外定义
TrackingEventHandler
(它不需要包含在类定义中)

下面是一个在类之外定义它的示例:

namespace someNamespace
{

    public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);

    internal Class BaseClass{ }
    internal Class DerivedClass : BaseClass, InterfaceClass
    {
      public event TrackingEventHandler NewTrackingEventObservations;
    }
}

这一行不是已经定义好了吗?:
public event TrackingEventHandler NewTrackingEventObservations;
我在这里举了一个例子:您将TrackingEventHandler定义为public,但它包含在一个内部类中。修改的类访问优先,有效地使TrackingEventHandler也成为内部的。您可以吗提供一个关于“…在此类之外定义TrackingEventHandler…”的示例,并用示例更新了答案。我尝试了此操作。我收到以下错误:“DerivedClass未实现接口成员InterfaceClass.example”