2012-12-11 15 views
5

Mam scentralizowaną konfigurację StructureMap, do której dołączają różne aplikacje interfejsu użytkownika. Nigdy nie miałem potrzeby modyfikowania tylko "podstawowej" konfiguracji. Uruchomiłem dziś wystąpienie, w którym muszę zmodyfikować/usunąć główną konfigurację dla konkretnej aplikacji. Oczywiście mogłem przenieść główny kod konfiguracji do innej aplikacji, ale zanim to zrobiłem, chciałem mieć pewność, że nie brakuje mi czegoś oczywistego w interfejsie StructureMap. Poniżej znajduje się skrócona wersja mojego podstawowej konfiguracji:Jak mogę zmodyfikować wcześniej skonfigurowaną konfigurację StructureMap?

ObjectFactory.Initialize(cfg => 
{ 
    cfg.Scan(scan => 
     { 
      scan.Assembly("Core"); 
      scan.WithDefaultConventions(); 

      scan.ConnectImplementationsToTypesClosing(typeof(IValidationRule<>)); 
      // more after this.... 
     } 
} 

W czasie wykonywania tej jednej aplikacji chciałbym usunąć konfigurację dla typów zamykających IValidationRule, ale trzeba jeszcze wymyślić coś opłacalnego. Wszystkie metody wyrzucania wydają się skupiać wokół znaczenia singleton. Ponieważ nie mam do czynienia z Singleton dodaje nie działa:

ObjectFactory.Model.For(typeof(IValidationRule<>)).EjectAndRemoveAll(); //no work 

ObjectFactory.Model.EjectAndRemove(typeof(IValidationRule<>)); //nor does this 

Czy istnieje sposób, że mogę zmodyfikować moje konfiguracji StructureMap aby nie patrzeć na IValidationRule s? Czy mogę wysunąć wystąpienia nie singletonowe z IValidationRule s? Czy mam inne opcje modyfikacji mojej konfiguracji StructureMap?

Odpowiedz

2

Co powiesz na coś takiego? Myślę, że to powinno zadziałać.

ObjectFactory.Model.EjectAndRemoveTypes(match 
    => match != null && match.GetInterfaces().Any(i 
     => i.Name.Contains("IValidationRule"))); 
+0

Czy jest coś takiego w StructureMap3, gdzie ObjectFactory został uznany za przestarzały? – rexdefuror

Powiązane problemy