Mam problem z wstrzyknięciem instancji do struktury mapy dla moich testów.Struktura Nie można użyć wstrzykniętej instancji do wstrzyknięcia settera.
Moje obiekty wykres wygląda tak
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1) najpierw tworzę kontener i dodać wszystkie znalezione rejestrów
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
jeden z tych zeskanowanych zespołów zawiera następujące rejestrację
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2) następnie chcę, aby wprowadzić specjalny atrapa obiektu dla tych menedżerów
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3) Następnie przypadki manager są tworzone bez setter zastrzyku skonfigurowanego (w celu uniknięcia wzajemnie od siebie zależnych)
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
4) Wreszcie używam metody BuildUp, aby ustawić Właściwości typu IManager.
_container.Configure(x => x.SetAllProperties(c =>
{
// configure the property injection for all managers
c.Matching(prop => typeof(IManager).IsAssignableFrom(prop.PropertyType));
}));
// push in dependencies -> EXCEPTION
managerInstances.ForEach(x => _container.BuildUp(x));
Niestety w ostatnim wierszu kodu otrzymuję następujący wyjątek.
StructureMap.StructureMapException: StructureMap Kod Wyjątek: 245 Błąd podczas próby utworzenia InstanceBuilder dla IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86, DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = neutral, TokenKluczaPublicznego = null ----> System .ArgumentException Ekspresja typu 'System.Object' nie może być stosowany dla parametru typu 'System.String' metody 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
Dlaczego structmap próbuje użyć InstanceBuilder, gdy wstrzyknąłem wystąpienie?
Br David
Rozwiązałeś ten problem? Mam ten sam wyjątek. – AdamSane