【发布时间】:2010-04-05 14:03:37
【问题描述】:
我有一个 ASP.NET Web 窗体页面,演示者需要用控件填充该页面。这种交互对页面生命周期有些敏感,我想知道是否有一个我不知道的技巧。
我想对整个事情采取实际行动,但不影响可测试性。
目前我有这个:
public interface ISomeContract
{
void InstantiateIn(System.Web.UI.Control container);
}
此合同依赖于 System.Web.UI.Control,我需要它才能使用 ASP.NET Web 窗体编程模型进行操作。但无论是视图还是演示者都可能不了解 ASP.NET 服务器控件。
我该如何解决这个问题?如何在我的具体视图中使用 ASP.NET Web 窗体编程模型而不在我的合同程序集中使用 System.Web.UI.Control 依赖项?
为了澄清一点,这种类型的界面都是关于 UI 组合的(使用 MEF)。它在整个框架中都是已知的,但实际上只能从具体视图中调用。具体视图仍然是唯一了解 ASP.NET Web 窗体的内容。然而,那些说InstantiateIn(System.Web.UI.Control) 的公共方法存在于我的合同程序集中,这意味着对 ASP.NET Web 窗体的依赖。
我一直在考虑一些双重调度机制甚至访问者模式来尝试解决这个问题,但我还不知道我想朝哪个方向发展,我真的想就此事提供一些意见。
【问题讨论】:
-
为什么视图和演示者无法了解 ASP.NET 服务器控件?
-
@Kirk 可测试性?嘲笑这些东西会不会很困难(几乎不可能)?
标签: c# asp.net dependency-injection mvp mef