1
私はjsutのStructureMap(IOC)の基礎とグリップを取得していますと明るく、intergrateしようとしているのStructureMapとここIntergrating(イアン・クーパー)のStructureMap
https://iancooper.github.io/Paramore/QuickStart.html
を見つけることができる明るいのデモMVCプロジェクト内。
私が午前問題は、ビルドでのStructureMapオブジェクトの工場に渡すために何かを取り組んでいる、それは
を返して、私は現在、次のエラーが発生している
An exception of type 'System.ArgumentOutOfRangeException' occurred in StructureMap.dll but was not handled in user code
Additional information: Specified argument was out of the range of valid values.
工場ハンドラ
public class SimpleHandlerFactory : IAmAHandlerFactory
{
public IHandleRequests Create(Type handlerType)
{
return new GreetingCommandHandler();
}
public void Release(IHandleRequests handler)
{
}
}
CommandHandler
public class GreetingCommandHandler : RequestHandler<GreetingCommand>
{
public override GreetingCommand Handle(GreetingCommand command)
{
Debug.Print("This is the trace for the command : {0}", command.Name);
return base.Handle(command);
}
}
そして、私のStructureMap依存スコープ
public IHandleRequests<T> GetExecutorFor<T>() where T : class, IRequest
{
return this.Container.GetAllInstances<IHandleRequests<T>>().FirstOrDefault(); // GetInstance() throws exception if more than one found
}
そしてIoC.csに事前に
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
// x.For<IHandleRequests<IRequest>>().Use<IHandleRequests<IRequest>>();
// So this is where I was going wrong I should of been doing
x.For<IHandleRequests<GreetingCommand>>().Use<GreetingCommandHandler>();
});
return ObjectFactory.Container;
}
おかげで、
マーティン
完璧な@pedroはまさに必要なものです:Dはちょうど長い週末の後にちょっと太っていました –