问题描述
|
是否可以通过autofac的PropertyInjectionModule将值/设置注入ASP.NET页?我的印象是,默认处理程序行为是搜索属性并找到与容器中的服务匹配的任何类型。
例如页面:
public class MyPage: System.Web.UI.Page {
public IDataProvider DataProvider { get; set; }
public bool SomeSetting {get; set; }
public bool AnotherSetting { get; set; }
public string MySettings { get; set; }
// stuff
}
我想也许您可以指定属性:
builder.RegisterType<MyPage>()
.WithProperty(\"SomeSetting\",true)
.WithProperty(\"AnotherSetting\",false)
.WithProperty(\"MySettings\",\"do-re-mi\");
但它似乎不起作用。
我意识到我可以设置IMyPageConfig接口并以这种方式提供设置,但是这些是可选属性,可能需要设置也可以不需要设置。
解决方法
ASP.NET 2中的IoC有所限制-尽管该模块将属性注入到页面中,但它实际上不能使用Autofac的常规依赖项注入功能。
在WebForms中,人们通常采用的方法是使用Model-View-Presenter之类的东西,其中页面只是一个“哑”视图,而主持人是进行逻辑(和适当的依赖注入)的地方。
查看http://webformsmvp.com/-我认为那里有一个IoC示例和Autofac支持。