有人告诉我要制作一个可插入的网络应用程序。与webforms。我们的想法是让一个带有插件主机的基本Web应用程序加载任何插件并与之相关的网页。
例如,我的MyHostApplication 包含母版页和default.aspx文件。在编译时,基本上项目将在主目录中包含文件 Site.Master 和 Default.aspx ,并在 MyHostApplication.dll 中包含bin /“dir。所有插件都可以在目录“plugins /”中说。 然后我创建了计算器插件作为一个新项目,其中包含此网页 Calc.aspx ,以及目录“bin /”中的程序集Calculator.dll ...或者web.config我可能会把它移动到某个地方。 我可以使用LoadAssembly在主机应用程序中加载程序集并获取主类(我作为基类,所有插件基类继承此类)并从属性中获取一些信息,如名称,版本,位置菜单等。
现在出现问题 - 当我导航到 /plugins/Calculator.aspx 时(让我们从插件主机构建的工具菜单中说出来)它会加载它的程序集并且不知道主要的主机应用程序。但它必须适用于主要应用。此外,如果我可以使用插件页面的主应用程序的主页面,它应该是最好的。
有些人可以在这里给我一些帮助提示吗?提前谢谢。
答案 0 :(得分:0)
不是您问题的直接答案,但是您已经探索过MEF
它基于相同的原则,可以帮助您在想要实现的目标上取得先机。
答案 1 :(得分:0)
Attributes作为一种集成机制非常有用。
方法非常简单,基本上我们想要识别webforms,以便我们可以动态地找到它们;使用属性和反射为解决方案细节提供了很大的灵活性。
首先,您需要设计(在纸上/白板/头脑中)一组属性,这些属性将为您提供您所追求的内容 - 您是否只想使用属性“找到”网络表单 - 或者您是否也想使用它们来提供其他有用的元数据?
之后:
如果您不熟悉属性,this tutorial可能有帮助。
答案 2 :(得分:0)
感谢您的回复!最后我得到了我正在寻找的东西:) ...我看到了一个仅用于我的案例的教程,这是用MVC v.2解决的,非常适合我的想法。
可以找到here。这是非常基本的,但它解决了插件页面和母版页使用的问题,我们也可以很容易地管理插件和版本的许可证。另一件事是我喜欢与它密切配合使用的jQuery,所以这个想法对我有用:)