Testlerimin bir örneğini structuremap içine enjekte etmemde bir sorun yaşıyorum.YapıYükleme enjeksiyonu için enjekte edilmemiş örneği kullanmak mümkün değil
My nesneleri grafiği, bu
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1) i ilk bulunan tüm kayıtları kabı oluşturmak ve ekleme bu taranmış düzeneklerinin
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
bir Aşağıdaki kayıt içeren benzer
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2) sonra (
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
) dairesel bağımlılıkları önlemek için bu yöneticileri
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3) Daha sonra yönetici örnekleri yapılandırılmış ayarlayıcı enjeksiyonu olmadan oluşturulur için özel bir sahte nesne enjekte istiyorum 4) Sonunda IManager türünün Özelliklerini ayarlamak için BuildUp yöntemini kullanıyorum.
_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));
Son kod satırındaki talihsizde, aşağıdaki özel durumu elde ediyorum.
StructureMap.StructureMapException: StructureMap İstisna Kodu: IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86, DynamicProxyGenAssembly2 için bir InstanceBuilder oluşturmaya çalışırken 245 Hata, Sürüm = 0.0.0.0, Culture = neutral, PublicKeyToken = null ----> Sistem .ArgumentException: türü 'System.Object' ifadesi yöntemi arasında 'System.string' parametresi için kullanılamaz 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
Neden structuremap örneği enjekte ettiğimde bir InstanceBuilder kullanmayı deniyor?
Br, David
Bu sorunu çözdünüz mü? Bende aynı istisna var. – AdamSane