【问题标题】:How does an addin get a reference to the host?插件如何获得对主机的引用?
【发布时间】:2017-05-03 14:46:30
【问题描述】:

我正在试验 System.Addin MAF 功能。我有一个主机,它在一个新的 appdomain 中创建一个新插件的实例并开始运行。

我想在主机上使用插件调用方法来备份数据。很清楚如何让宿主创建插件的实例(AddinToken.Activate),但是插件如何获得对宿主的引用?

我尝试通过 Initialise 方法将主机的副本向下传递给插件,但由于它需要可序列化,这会导致困难。我必须将一些属性标记为 NonSerialized,这意味着当插件调用其上的方法时它们为空。感觉虽然写了一个View&Adapter来支持Addin->Host契约,但是被这个方法绕过了?

【问题讨论】:

    标签: maf


    【解决方案1】:

    您不会将主机副本传递给插件。相反,您需要定义一个传递给插件的接口并在主机端提供一个实现。

    例如,您可以定义 AddIn 必须实现的 Initialize 方法。您可以为该方法指定代表主机提供的服务的参数。我使用它的一种情况是为插件提供日志接口。初始化方法定义为:

    void Initialize(ILogger logger);
    

    当主机在 AddIn 上调用 initialize 时,它​​会传递 ILogger 的实现,然后 Addin 可以保留该实现并在需要记录时调用。

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多