2015-11-11 8 views
1

Представьте интерфейсStructureMap регистрация

  • IRepository
  • IFooRepository: IRepository
  • IBarRepository: IRepository

с попутным Repository:

  • FooRepository: RepositoryBase, IFooRepository
  • BarRepository: RepositoryBase, IBarRepository

Я пытаюсь сделать общую регистрацию структуры карты, чтобы зарегистрировать все мое хранилище в одном реестре назвать мой IoC с IFooRepository

public class DataRegistry : Registry 
    { 
     public DataRegistry() 
     { 
      Scan(x => 
      { 
       x.AssemblyContainingType<RepositoryBase>(); 
       x.IncludeNamespaceContainingType<RepositoryBase>(); 
       //Todo Register EndWith Repository as ImplementedInterface 
      }); 
     } 
    } 

ответ

0

Это позволит вам разрешить IFooRepository как экземпляр FooRepository:

Scan(x => 
{ 
    x.AssemblyContainingType<RepositoryBase>(); 
    x.IncludeNamespaceContainingType<RepositoryBase>(); 
    x.WithDefaultConventions(); 

}); 

WithDefaultConventions соединяет все интерфейсы остроумие h классов с тем же именем (кроме I). SingleImplementationsOfInterface будет делать в вашем случае также.