2017-09-18 11 views
0

現在asp.net mvc appを実装中です。私はAutofac DIを使用しています。クラスとインターフェイスに同じ名前のプレフィックスがあるかどうかをチェックしたいのですが、すべての登録を解決するために、各インターフェイスのマッピングエントリを追加する必要があります。現在のプロジェクトには50以上のクラスがあります。インターフェイス名と接頭辞が同じインターフェイス名とクラスを持つautofacレジスタタイプ

おかげ ニック

答えて

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

関連する問題