2017-08-25 66 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>(); 
    }