Tôi đang gặp sự cố khi tiêm một cá thể vào sơ đồ cơ sở cho các thử nghiệm của mình.StructureMap không thể sử dụng trường hợp tiêm cho tiêm setter
đối tượng đồ thị của tôi trông như thế này
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1) đầu tiên tôi tạo container và thêm tất cả cơ quan đăng ký tìm thấy
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
một trong những cụm quét có chứa các đăng ký sau
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2) sau đó tôi muốn tiêm một đối tượng giả đặc biệt dành cho các nhà quản lý này
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3) Sau đó, các trường hợp quản lý được tạo ra mà không cần tiêm setter cấu hình (để tránh phụ thuộc vòng tròn)
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
4) cuối cùng tôi sử dụng phương pháp BuildUp để đặt Thuộc tính loại 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));
Thật không may trong dòng mã cuối cùng tôi nhận được ngoại lệ sau.
StructureMap.StructureMapException: StructureMap Exception Code: 245 Lỗi trong khi cố gắng để tạo ra một InstanceBuilder cho IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86, DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = trung tính, PublicKeyToken = null ----> Hệ thống .ArgumentException: Biểu hiện của gõ 'System.Object' không thể được sử dụng cho các tham số có kiểu 'System.String' của phương pháp 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
Tại sao structuremap cố gắng sử dụng một InstanceBuilder khi tôi đã tiêm cá thể?
Br, David
Bạn đã giải quyết được sự cố này chưa? Tôi có cùng ngoại lệ. – AdamSane