我正在努力创建一个多设备的mvc网站,其中可以为每个租户覆盖视图。
我正在使用RazorGenerator以便能够从已编译的程序集加载视图(进行一些修改以允许多个程序集)。
所以现在我需要一种方法来识别包含视图的bin中的Dll。目前我只是创建一个虚拟类(Class1
)并循环遍历AppDomain.CurrentDomain.GetAssemblies().ToList()
以查看哪些asssemblies包含该虚拟类
我可以想象一些可能性。
IViewPlugin
并将其分配给每个视图插件程序集中的Class1
MyCompany.Presentation.Views.Plugins.[ClientName]
并包含所有匹配的插件。当程序集本身没有任何实际的类时,还有其他更好的方法将程序集标记为'插件'程序集(除非我专门为了识别插件程序集而创建一个)
答案 0 :(得分:1)
您可以创建自定义属性:
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = true)]
public class PluginAssemblyAttribute : Attribute
{
}
并将其应用于集会:
[assembly: PluginAssembly]
然后,您可以检查程序集是否具有以下属性:
if (assembly.IsDefined(typeof(PluginAssemblyAttribute), false)
...