是否有可能让这些东西工作(某种方式强制 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>();
我的结果:
Porktal.Core.Tests.UnitOfWorkTests.Can_Start_Unit_of_Work:StructureMap.StructureMapException:StructureMap 异常代码:207 创建 PluginType Porktal.Core.Data.IUnitOfWorkFactory 的实例 'Porktal.Core.Data.NH.NHUnitOfWorkFactory, Porktal.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 时出现内部异常。检查内部异常以获取更多详细信息。 ---- System.MethodAccessException:Porktal.Core.Data.NH.NHUnitOfWorkFactory..ctor() 堆栈跟踪: 在 StructureMap.Pipeline.ConfiguredInstanceBase`1.StructureMap.Pipeline.IConfiguredInstance.Build(Type pluginType, BuildSession session, InstanceBuilder builder) 在 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, Type pluginType, Instance instance) 在 StructureMap.InstanceFactory.Build(BuildSession 会话,实例实例) 在 StructureMap.BuildSession.CreateInstance(类型 pluginType,Instance 实例) 在 StructureMap.BuildSession.b__0(类型 t) 在 StructureMap.Util.Cache`2.get_Item(KEY key) 在 StructureMap.BuildSession.CreateInstance(类型 pluginType) 在 StructureMap.Container.GetInstance(类型 pluginType) 在 StructureMap.Container.GetInstance[T]() 在 StructureMap.ObjectFactory.GetInstance[PLUGINTYPE]() 在 D:\Porktal\Porktal.Core\Bootstraper.cs:line 20 中的 Porktal.Core.Bootstraper.Bootstrap() 在 D:\Porktal\Porktal.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(Type pluginType, BuildSession session, InstanceBuilder builder)