2017-09-18 7 views
0

현재 asp.net mvc app을 구현 중입니다. Autofac DI를 사용하고 있으며 같은 이름의 접두어가있는 클래스와 인터페이스가 있는지 확인하고 싶습니다. 모든 등록을 해결하려면 각 인터페이스에 매핑 항목을 추가해야합니까? 현재 프로젝트에는 50 개 이상의 클래스가 있습니다.인터페이스와 인터페이스 이름이 동일한 접두어가 붙은 인터페이스와 클래스가있는 자동 등록

감사 닉

답변

1

당신은 당신의 규칙에 따라 이름을 확인하는 반사를 사용하여 Starup에 뭔가를 할 수 있습니다.

내가 유사한 수행하지만, 속성의 존재를 확인했습니다

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

:

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(); 
     } 
    } 
} 

이 여기에 전체 예를 참조하십시오