Tengo un problema al insertar una instancia en structuremap para mis pruebas.StructureMap no es posible utilizar la instancia inyectada para la inyección de setter
Mi gráfico de objetos se parece a esto
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1) primera creo el recipiente y añadir todos los registros que se encuentran
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
uno de estos conjuntos escaneados contiene la siguiente inscripción
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2) entonces quiero para inyectar un objeto mock especial para este gestores
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3) Entonces las instancias del gestor se crean sin inyección setter configurado (para evitar dependencias circulares)
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
4) finalmente utilizo el método BuildUp para establecer las Propiedades de tipo 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));
Desafortunadamente en la última línea del código recibo la siguiente excepción.
StructureMap.StructureMapException: StructureMap Código de excepción: 245 error al intentar crear una InstanceBuilder para IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86, DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null ----> Sistema .ArgumentException: Expresión de tipo 'System.Object' no se puede usar para el parámetro de tipo 'System.String' del método de 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
¿Por qué structuremap intenta usar InstanceBuilder cuando inyecté la instancia?
Br, David
¿Ha resuelto este problema? Tengo la misma excepción. – AdamSane