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; 
    } 

おかげで、

マーティン

答えて

1

は、あなたが登録しなければならないGreetingCommandHandler解決す​​るにはそれはあなたのIContainerの中で、特にDefaultConventionsを使って解決しないためです。

あなたに適しています。

他のすべての具体的な実装では、同じことを行う必要があります。

+0

完璧な@pedroはまさに必要なものです:Dはちょうど長い週末の後にちょっと太っていました –