2017-08-25 5 views
0

インターフェイスごとに同じ名前の対応する実装クラス(例:ISomeThing : SomeThing)がある場合、明示的なマッピングを作成せずにすべてを自動的に解決する方法はありますか?暗黙的に同じ名前のクラスにIoCインターフェイスを解決する

すでにこれを持っているIoCコンテナは、おそらくそこ..です

+1

確かに - ここでは、これを行うのStructureMapからいくつかのドキュメントは次のとおりです。http://structuremap.github.io/registration/auto-registration-and-conventions/ – axlj

+0

@axlj、この特定の例で答えてください私はそれを「受け入れられた」とマークします。 – LastTribunal

答えて

1

これはのStructureMapのデフォルト規則です。 I [Something]/[Something]命名規則を使用して、具象クラスをインタフェースに接続しようとします。

public interface ISpaceship { } 

    public class Spaceship : ISpaceship { } 

    public interface IRocket { } 

    public class Rocket : IRocket { } 

    [Fact] 
    public void default_scanning_in_action() 
    { 
     var container = new Container(_ => 
     { 
      _.Scan(x => 
      { 
      x.Assembly("<AssemblyNameWhereClassesAreDefined>"); 
      x.WithDefaultConventions(); 
      }); 
     }); 

     var spacesfip = container.GetInstance<ISpaceship>().ShouldBeOfType<Spaceship>(); 
     var rocket = container.GetInstance<IRocket>().ShouldBeOfType<Rocket>(); 
    } 
関連する問題