[英]C# How to expose events in DLL
我有一個需要公開“事件訂閱”的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
類中(只能由同一程序集中的文件訪問,請參見此鏈接 ),但是您嘗試公開的接口是public
。 您可以將包含類公開,也可以在此類之外定義TrackingEventHandler
(不需要包含在類定義中)。
這是在類外部定義它的示例:
namespace someNamespace
{
public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);
internal Class BaseClass{ }
internal Class DerivedClass : BaseClass, InterfaceClass
{
public event TrackingEventHandler NewTrackingEventObservations;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.