asp.net-mvc-3 - 使用 Autofac 2.5 进行属性注入(inject)

标签 asp.net-mvc-3 autofac

如何在 Autofac 2.5 中启用属性注入(inject),以便自动设置我的公共(public) ILogger Log 属性?

我使用以下方法在 Autofac 2.4 的 MVC3 项目中启用属性注入(inject)

public class InjectPropertiesByDefaultModule : Autofac.Module
{
    protected override void AttachToComponentRegistration (IComponentRegistry componentRegistry, IComponentRegistration registration)
    {
        registration.Activating += (s, e) =>
        {
            e.Context.InjectProperties (e.Instance);
        };
    }
}


builder.RegisterModule<InjectPropertiesByDefaultModule> ();

但这似乎不再适用于 Autofac 2.5。

最佳答案

您现在可以在注册中使用 PropertiesAutowired 方法来指示应执行属性注入(inject)。

var builder = new ContainerBuilder();
builder.RegisterType<Foo>().PropertiesAutowired();

要为特定程序集中的所有对象设置此属性,您可以将 PropertiesAutowired 与 Autofacs RegisterAssemblyTypes 结合使用:

var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(typeof(Foo).Assembly)
    .PropertiesAutowired();

关于asp.net-mvc-3 - 使用 Autofac 2.5 进行属性注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048494/

相关文章:

asp.net-mvc - ASP.NET MVC 自定义控件

c# - Autofac 可选/惰性依赖项

c# - Asp.net Core AutoFac 使用工厂注册泛型

structuremap - Autofac vs. Structuremap,如何注入(inject)接口(interface)的所有实例?

c# - 尝试通过安全透明方法访问安全关键类型失败

asp.net-mvc-3 - SmtpClient.SendAsync 阻塞了我的 ASP.NET MVC 请求

asp.net-mvc-3 - 如何创建适用于我所有 Controller 的路由 "{controller}/{action}/paramname/paramvalue/..."?

javascript - FileContentResult - 防止浏览器缓存图像

.net - Structuremap - 多个接口(interface)实现

c# - 使用 autofac 3.1.1 进行属性注入(inject)