插件架构

Sas*_*ash 5 c# asp.net

我正在尝试了解插件架构。特别是在 Windows Live Writer 的实现中使用的那个。我指的是您可以通过添加/删除 DLL(+ 配置)来配置/启用/禁用/添加/删除附加功能的样式。

我希望在基于 Web 的应用程序中看到类似的东西。任何人都可以指出我正确的方向吗?

提前致谢。

-SK

Chr*_*ken 0

基本上,您需要使用 AssemblyLoader 在运行时从指定目录加载程序集,然后创建一个实例并调用它。

    Assembly assembly = Assembly.LoadFrom("myAssembly.dll");
    Type type = assembly.GetType("theType");
    object myInstance = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)

如果您的所有插件都实现一个公开特定方法(例如 Load())的接口,那么效果最好。然后你可以这样做:

myInstance.Load()
Run Code Online (Sandbox Code Playgroud)

前提是您将 myInstance 投射到您的界面。

  • 这样做的问题是它会产生安全风险。最好使用“AppDomain”加载到沙箱中。 (3认同)