Maf 加载项如何获取对主机的引用?

Maf 加载项如何获取对主机的引用?,maf,Maf,我正在试验该系统。Addin MAF功能。我有一个主机,它在一个新的appdomain中创建一个新加载项的实例并启动它运行 我想在主机上使用addin调用方法来备份数据。很清楚如何让主机创建加载项的实例(AddinToken.Activate),但加载项如何获得对主机的引用 我曾尝试通过初始化方法将主机的副本传递给外接程序,但由于它需要可序列化,这会造成困难。我必须将某些属性标记为非序列化,这意味着当加载项调用其上的方法时,它们为null。我觉得虽然有一个视图和适配器是为了支持Addin->Ho

我正在试验该系统。Addin MAF功能。我有一个主机,它在一个新的appdomain中创建一个新加载项的实例并启动它运行

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


我曾尝试通过初始化方法将主机的副本传递给外接程序,但由于它需要可序列化,这会造成困难。我必须将某些属性标记为非序列化,这意味着当加载项调用其上的方法时,它们为null。我觉得虽然有一个视图和适配器是为了支持Addin->Host契约而编写的,但是这个方法却绕过了它?

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

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

void Initialize(ILogger logger);
当主机在加载项上调用initialize时,它会传递一个ILogger实现,加载项可以在需要登录时保留并调用该实现