我正在尝试使用System.Addin MAF功能。我有一个主机,它在新的appdomain中创建一个新插件的实例并开始运行。
我希望在主机上使用addin调用方法来备份数据。很明显如何让主机创建一个addin实例(AddinToken.Activate),但是addin如何获得对主机的引用?
我尝试通过Initialise方法将主机副本传递给addin,但由于它需要可序列化,这会造成困难。我必须将一些属性标记为NonSerialized,这意味着当addin调用其上的方法时它们为null。我觉得虽然有一个View&为支持Addin-> Host合同而编写的适配器,这个方法正在绕过它吗?
答案 0 :(得分:1)
您不会将主机副本传递给插件。相反,您需要定义一个传递给插件的接口,并在主机端提供实现。
例如,您可以定义AddIn必须实现的Initialize
方法。您可以为该方法指定表示主机提供的服务的参数。我使用它的一种情况是为插件提供日志记录接口。 initialize方法定义为:
void Initialize(ILogger logger);
当主机调用AddIn初始化时,它会传递ILogger的一个实现,然后Addin可以在需要记录时保持并调用它。