簡體   English   中英

C#如何在DLL中公開事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM