C#如何在DLL中公开事件
我有一个DLL,需要公开“事件订阅”,以便使用我的DLL的应用程序可以订阅特定事件以获取数据。(DLL本身订阅SDK中的事件) 我是个新手,所以请对我温和一点,并解释一下 我有一个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
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”