これを機能させることは可能ですか(ObjectfactoryにActivatorのようなインスタンスを強制的に作成させる方法)
以下の例では、すべてが単一のアセンブリに配置されています
public interface IUnitOfWorkFactory
{
IUnitOfWork Create();
}
internal class NHUnitOfWorkFactory : IUnitOfWorkFactory
{
public IUnitOfWork Create()
{
//// do needed stuff
}
}
ブートストラップ:
ObjectFactory.Configure(x =>
{
x.ForRequesedType<IUnitOfWorkFactory>.TheDefaultIsConcreteType<NHUnitOfWorkFactory>();
});
利用方法:
IUnitOfWorkFactory factory = ObjectFactory.GetInstance<IUnitOfWorkFactory>();
私の結果:
Portal.Core.Tests.UnitOfWorkTests.Can_Start_Unit_of_Work : StructureMap.StructureMapException : StructureMap 例外コード: 207 PluginType Porktal.Core.Data.IUnitOfWorkFactory のインスタンス 'Portal.Core.Data.NH.NHUnitOfWorkFactory, Porktal.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' の作成中に内部例外が発生しました。詳細については、内部例外を確認してください。 ---- System.MethodAccessException : Portal.Core.Data.NH.NHUnitOfWorkFactory..ctor() スタックトレース: StructureMap.Pipeline.ConfiguredInstanceBase`1.StructureMap.Pipeline.IConfiguredInstance.Build (タイプ pluginType、BuildSession セッション、InstanceBuilder ビルダー) で StructureMap.Pipeline.ConfiguredInstanceBase`1.build (タイプ pluginType、BuildSession セッション) で StructureMap.Pipeline.Instance.createRawObject (タイプ pluginType、BuildSession セッション) で StructureMap.Pipeline.Instance.Build (タイプ pluginType、BuildSession セッション) で StructureMap.Pipeline.BuildPolicy.Build (BuildSession buildSession、タイプ pluginType、インスタンス インスタンス) で StructureMap.InstanceFactory.Build (BuildSession セッション、インスタンス インスタンス) で StructureMap.BuildSession.CreateInstance (タイプ pluginType、インスタンス インスタンス) で StructureMap.BuildSession.b__0(タイプ t) で StructureMap.Util.Cache`2.get_Item(KEY キー) で StructureMap.BuildSession.CreateInstance (タイプ pluginType) で StructureMap.Container.GetInstance (タイプ pluginType) で StructureMap.Container.GetInstance[T]() で StructureMap.ObjectFactory.GetInstance[PLUGINTYPE]() で D:\Portal\Portal.Core\Bootstraper.cs:line 20 の Porktal.Core.Bootstraper.Bootstrap() で D:\Portal\Portal.Core.Tests\UnitOfWorkTests.cs:line 11 の Porktal.Core.Tests.UnitOfWorkTests.Can_Start_Unit_of_Work() で ----- 内部スタック トレース ----- PorktalCoreDataNHNHUnitOfWorkFactoryInstanceBuilder44203c8113d44053be045df4db28c3dc.BuildInstance (IConfiguredInstance、BuildSession) で StructureMap.Pipeline.ConfiguredInstanceBase`1.StructureMap.Pipeline.IConfiguredInstance.Build (タイプ pluginType、BuildSession セッション、InstanceBuilder ビルダー) で