使用autofac将属性注入asp.net页面:重写PropertyInjectionModule行为以注入值/设置

时间:2011-06-15 07:04:39

标签: asp.net autofac

是否可以通过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接口并以这种方式提供设置,但这些是可选或不需要设置的可选属性。

1 个答案:

答案 0 :(得分:1)

ASP.NET Page中的IoC有点受限 - 尽管该模块正在向页面中注入属性,但它无法真正使用Autofac的常规依赖注入功能。

在WebForms中,人们通常会使用类似于模型 - 视图 - 展示器的方式,其中页面只是一个“哑”视图,而演示者是逻辑(和正确的依赖注入)发生的地方。 / p>

查看http://webformsmvp.com/ - 我认为有一个IoC示例和Autofac支持。