0

我正在尝试制作一个多租户 mvc 网站,其中可以为每个租户覆盖视图。

我正在使用RazorGenerator以便能够从已编译的程序集中加载视图(进行一些修改以允许多个程序集)。

所以现在我需要有一种方法来识别包含视图的 bin 中的 Dll。目前我只是创建一个虚拟类(Class1)并循环AppDomain.CurrentDomain.GetAssemblies().ToList()查看包含该虚拟类的程序集

我可以想象一些可能性。

  1. 在每个视图插件程序集中创建一个接口IViewPlugin并将其分配给我Class1
  2. 命名每个程序集MyCompany.Presentation.Views.Plugins.[ClientName]并包含所有匹配的插件。

当程序集本身没有任何实际类时,是否还有其他更好的方法可以将程序集标记为“插件”程序集(除非我专门创建了一个用于识别插件程序集的类)

4

1 回答 1

1

您可以创建自定义属性:

[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = true)]
public class PluginAssemblyAttribute : Attribute
{
}

并将其应用于组件:

[assembly: PluginAssembly]

然后,您可以检查程序集是否具有以下属性:

if (assembly.IsDefined(typeof(PluginAssemblyAttribute), false)
    ...
于 2013-01-23T10:20:21.033 回答