如何避免类库与主程序集直接链接?

我正在尝试让类库以插件系统的方式实现来自主程序集的接口。我目前有一个有效的设置,可以在类库中引用主程序集并在其中实现接口。然后,我通过反射加载实例。我想避免新的类库对主应用程序进行硬引用。

从C ++的角度来看,我只提供要由库实现的头文件。然后将发生一些动态加载,并使新的二进制实现可用于主应用程序。似乎在C#中没有“提供头文件”的概念。

似乎很奇怪,类库仅在继承主界面时需要在主应用程序上进行硬引用。它还带来了其他当前不太重要的问题,例如密封类或管理内部类的可见性。

解决方案2将通过新的类库创建另一层间接层,并仅在其中公开接口。只是为新库提供一些接口类,这听起来很麻烦。

还有其他选择吗?

编辑:

当前设置:

我的解决方案中有2个项目。一个是控制台应用程序(MyApp),另一个是类库(ExtensionDll)。在MyApp中,我有一个像这样的界面:

namespace MyApp
{
    public interface IPlugin
    {
        void ExecuteThirdPartyCode();
    }
}

在ExtensionDll中,我有

namespace ExtensionDll
{
    class ThirdPartyExtension : MyApp.IPlugin
    {
        void ExecuteThirdPartyCode()
        {
            //Their secret sauce
        }
    }
}

然后在MyApp中,我可以用

加载它
Assembly asm = Assembly.LoadFile(ExtensionDllPath);

找到实现IPlugin的类,并在其上调用ExecuteThirdPartyCode()

wo511461152 回答:如何避免类库与主程序集直接链接?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3124483.html

大家都在问