C#如何在DLL

时间:2018-08-30 09:27:33

标签: c# api events dll delegates

我有一个需要公开“事件订阅”的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
}

如何解决此问题?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您得到的错误是因为<xsl:copy-of select="Lines/Line"/>包含在TrackingEventHandler的类中(只能由同一程序集中的文件访问,请参见此link),但是界面您尝试公开的是internal。您可以公开包含类,也可以在该类之外定义public(不需要包含在类定义中)。

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

TrackingEventHandler