Autofac注册类型,接口和类具有相同的名称,前缀为接口

时间:2017-09-18 22:16:23

标签: asp.net-mvc-5 autofac

我目前正在实施asp.net mvc app。我正在使用Autofac DI,并想检查我是否具有与I相同名称前缀的类和接口。所以要解决每个注册,我是否需要为每个接口添加映射条目。目前的项目有50多个班级。

由于 NIK

1 个答案:

答案 0 :(得分:1)

您可以使用反射在Starup中执行某些操作,以根据您的约定检查名称。

我做过类似的事情,但检查是否存在属性:

private static void RegisterServices()
{
    var serviceList = AppDomain.CurrentDomain.GetAssemblies()
        .Where(aa => aa.FullName.IndexOf("DI.Web.Ex09", StringComparison.Ordinal) > -1)
        .SelectMany(a =>
            a.GetTypes()
            .Where(t => t.HasAttribute(typeof(InjectAttribute)) && t.IsPublic)
        );

    foreach (var t in serviceList)
    {
        var attribs = t.GetCustomAttributes<InjectAttribute>();
        foreach (var attrib in attribs)
        {
            _builder.RegisterType(t)
                .As(attrib.BindingType).InstancePerRequest();
        }
    }
}

请参阅此处的完整示例:

https://github.com/ovation22/IntroToDependencyInjection/tree/master/DI.Web.Ex09

相关问题