是否可以在ASP.NET网站中加载外部“web-parts”?我想制作包含用户控件或页面的独立dll以包含在主站点中。就像网站的插件架构一样。
我似乎找到的唯一示例将用户控件绑定到主项目,您需要对控件有一个“硬”引用。
我想要的是定义插件可以实现的共享接口,并且网站可以加载和显示。
答案 0 :(得分:3)
这里有一个关于将UserControl
编译成dll
ASP.NET UserControl class library
对于你所描述的内容,我强烈推荐creating custom server controls。您可以为所有插件提供抽象基类。
public abstract class PluginBase : WebControl {
}
然后,您可以在目录中搜索程序集,并搜索每个程序集以查找从该类型派生的任何内容。
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] assemblies = di.GetFiles("*.dll");
foreach (var assembly in assemblies) {
Assembly a = Assembly.LoadFrom(assembly.FullName);
foreach (Type type in a.GetTypes()) {
if (type.BaseType == typeof(PluginBase)) {
//load plugin
}
}
}
您还可以通过提供类似示例here
的配置部分在web.config中注册插件答案 1 :(得分:1)
插件可以实现您的界面。接口可以定义一种方法。此方法为插件的上下文提供必要的常规输入。插件的职责是返回可以放在最终输出页面上的html标记。通过这种方式,您可以对此进行扩展,但会损害页面生命周期和回发功能,因为页面不知道插件返回的内容。
答案 2 :(得分:1)
我认为您希望拥有能够加载解耦模块的基础设施。(控制反转或IoC)
详细了解WCSF Web客户端软件工厂 的 www.codeplex.com/websf 强>
如果您想要采用模块化方法的设计Web应用程序的示例代码,请下载Cuyahoga
Cuyahoga是一个开源的.NET网站 网站框架。它提供内容 管理能力和拥有 模块化方法
毕竟阅读了ASP.NET 3.5社交网络 非常好的书。
使用创建功能齐全的企业级社交网络 ASP.NET 3.5 以实用,实用的方式学习关键的新ASP.NET主题:LINQ,AJAX, C#3.0,n层架构和MVC 构建好友列表,消息系统,用户个人资料,博客,消息 董事会,团体等 丰富的示例代码,清晰的解释,有趣的例子, 和实用的建议 - 一个真正的 ASP.NET开发人员的动手书
<强> www.packtpub.com/expert-guide-for-social-networking-with-asp-.net-3.5/book 强>
作者向我们展示了如何将设计模式应用于现实世界的Web应用程序。 所有使用Bold Font突出显示的模块都是使用IoC Pattern开发的,使用 StructureMap
本书还有非常好的示例代码,您可以从Packt Publishing网站下载。