我有一个需要公开“事件订阅”的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
}
我该如何解决这个问题?
非常感谢!
您得到的错误是因为TrackingEventHandler
包含在一个internal
类中(只能通过同一个程序集中的文件访问,请参阅此link),但您尝试公开的接口是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;
}
}