次のコードがあります。
public class Dispatcher : IDispatcher {
public void Send(Order order) {
var type = typeof(IOrderHandler<>).MakeGenericType(order.GetType());
var handler = ObjectFactory.GetInstance(type);
}
}
注:この場合の順序が次の IOrderHandler を取得しようとしています: public class CoffeOrder : Order { }
私のStructureMap構成は次のとおりです。
ObjectFactory.Initialize(x => {
x.For<IOrderHandler>().Use<OrderHandler>();
});
デバッグすると、次のエラーが表示されます: {"StructureMap 構成エラー:\r\nエラー: 104\r\nソース: レジストリ: StructureMap.Configuration.DSL.Registry, StructureMap, Version=2.6.4.0, ...
他のオプションを試してみましたが、常に 104 エラーまたは 202 エラーで終わります: "StructureMap Exception Code: 202\nNo Default Instance defined for PluginFamily Proj.Test.Tests+IOrderHandler`1[[Proj.Test.Tests+CoffeOrder,プロジェクトテスト、...
注: CoffeOrder は、テストで渡す注文のタイプです。
Handler クラスとインターフェイスの私のコードは次のとおりです。
public class CoffeHandler : OrderHandler<CoffeOrder> {
public override void Handle(CoffeOrder order) {
// Some Code
} // CoffeHandler
}
public interface IOrderHandler {
void Handle(Order order);
} // IOrderHandler
public interface IOrderHandler<TOrder> : IOrderHandler where TOrder : Order {
void Handle(TOrder order);
} // IOrderHandler
public abstract class OrderHandler : IOrderHandler {
public abstract void Handle(Order order);
} // OrderHandler
public abstract class OrderHandler<TOrder> : OrderHandler, IOrderHandler<TOrder> where TOrder : Order {
public override void Handle(Order order) {
TOrder torder = (TOrder)order;
Handle(torder);
} // Handle
public abstract void Handle(TOrder order);
} // OrderHandler
誰か助けてくれませんか?
ありがとう、ミゲル