私のテストのためにインスタンスをstructuremapにインジェクトする際に問題があります。構造体はセッターインジェクションのインジェクションインスタンスを使用できません
マイオブジェクトのグラフは、この
internal class ConfigurationManager : IConfigurationManager : IManager
{
public ISomeManager SomeManager { get; set; }
}
internal class SomeManager : ISomeManager : IManager
{
public IConfigurationManager ConfigurationManager { get; set; }
}
1)は、最初のiが見つかったすべてのレジストリをコンテナを作成し、追加これらのスキャンアセンブリの
_container = new Container(c => c.Scan(s =>
{
s.TheCallingAssembly();
s.LookForRegistries();
}));
1には、以下の登録が含まれているように見えます
x.For<IConfigurationManager>().Singleton.Use<ConfigurationManager>();
2)、私は、この管理のため
_configurationManagerStub = MockRepository.GenerateStub<IConfigurationManager>();
_container.Inject(_configurationManagerStub);
3を特殊なモックオブジェクトを注入する)そしてマネージャインスタンスが(円形の依存性を回避するように構成されたセッタ注入せずに作成されている)
foreach (Type pluginType in AllManagers())
{
managerInstances.Add(_container.GetInstance(pluginType));
}
4)私は最後にBuildUpメソッドを使用して、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));
不幸なことに、最後のコード行では次の例外が発生します。
StructureMap.StructureMapException:のStructureMap例外コード:245 エラーInstanceBuilder IConfigurationManagerProxyd079980359cf491b821a3afb15be8a86ため、 DynamicProxyGenAssembly2、バージョン= 0.0.0.0、文化=中立、 なPublicKeyToken = nullを---->システムを作成しようとしているとき.ArgumentException: タイプの発現 'のSystem.Object' メソッドのタイプ のパラメータのために使用することができない '可能System.String' 'Castle.Core.Interceptor.IInterceptor [] GetIInterceptor []'
インスタンスを挿入したときにstructuremapがInstanceBuilderを使用しようとするのはなぜですか?
Brで、
デビッド
この問題は解決しましたか?私は同じ例外があります。 – AdamSane