C# 创建一个小型可插拔体系结构;插件注册表";使用类型初始化、并发访问和反射
我需要一些基本的“可插拔”架构,我很好奇我对实现的假设和想法是否和我所相信的一样。设置包含支持某些功能的所有类的“插件注册表”的基本过程如下:C# 创建一个小型可插拔体系结构;插件注册表";使用类型初始化、并发访问和反射,c#,asp.net-mvc,c#-4.0,.net-4.0,C#,Asp.net Mvc,C# 4.0,.net 4.0,我需要一些基本的“可插拔”架构,我很好奇我对实现的假设和想法是否和我所相信的一样。设置包含支持某些功能的所有类的“插件注册表”的基本过程如下: 反思程序集中的类并找到其中任何一个 从插件基类继承 生成一个新的“ModulePlugin”对象,该对象存储类名中的名称并获取对派生类型的引用,还可能从属性中获取一些元信息,如“插件类型” 上面的插件类型将根据请求创建派生类型的新实例,但会在上面的“ModulePlugin”对象中作为插件基类返回 将生成的插件存储在列表中 在第四步中,我使用一个带有静态
PluginRegistry.Plugins.Where(plugin => plugin.Type == Logger).Foo();
这在ASP.NET MVC应用程序中。
我假设:
我的假设正确吗?还有什么我应该注意的地方吗?Programmers.SE可能是这类问题的更好论坛。乍一看,我看不出你的设计有任何突出的问题。创建自定义插件管理器作为一种练习可能很有趣,但除此之外,它只是重新发明了.MEF。对于这样的东西来说,这太过分了。我不想强迫新开发人员学习一个新的框架,因为同样的核心可以用30行或更少的目标支持类来完成。我也不确定MEF是否适合我所处环境的约束。有时,现有的车轮并不适合您现有的推车。这已经完成,而且不是一次。在mvvm和所有宣传之前。没什么问题。通常,轻量级DIY插件胜过所有的“模式”和“框架”。。。。。乔舒亚的问题是,当你知道自己在做什么,为什么做什么的时候,你就会这样做。如果你是这样问的,你可能不需要为程序员操心。SE可能是一个更好的论坛,适合这种类型的q。乍一看,我看不出你的设计有任何突出的问题。创建自定义插件管理器作为一种练习可能很有趣,但除此之外,它只是重新发明了.MEF。对于这样的东西来说,这太过分了。我不想强迫新开发人员学习一个新的框架,因为同样的核心可以用30行或更少的目标支持类来完成。我也不确定MEF是否适合我所处环境的约束。有时,现有的车轮并不适合您现有的推车。这已经完成,而且不是一次。在mvvm和所有宣传之前。没什么问题。通常,轻量级DIY插件胜过所有的“模式”和“框架”。。。。。乔舒亚的问题是,当你知道自己在做什么,为什么做什么的时候,你就会这样做。如果你这样问的话,你可能不需要麻烦