1

私はいくつかのINotificationProcessorsを持っています。通常のチャネルを介して送信する代わりに、BackorderCancelledEmailProcessor何かを印刷したいからです。だから私は持っていますPrintDispatcherが、エラーが発生し、構成されているにもかかわらず、を解決できないと不平を言っprintLocationています。

関連するセットアップ:

 x.ForConcreteType<PrintDispatcher>()
   .Configure
   .Ctor<string>("printLocation")
   .Is(Settings.Default.Printer);


x.ForConcreteType<BackorderCancelledEmailProcessor>()
   .Configure
   .Ctor<INotificationDispatcher>("notificationDispatcher")
   .Is<PrintDispatcher>();

コンストラクター:

BackorderCancelledEmailProcessorはコンストラクターでいくつかの引数を取り、そのうちの 1 つが notificationDispatcher です。他のすべてがマップされます (これは切り替えなくても機能します)。もう一方のコンストラクターは次のとおりです。

public PrintDispatcher(string printLocation)

エラー:

Build Error on Instance '{GUID}' (Configured Instance of BackorderCancelledEmailProcessor)
  for PluginType BackorderCancelledEmailProcessor

StructureMap.StructureMapException: StructureMap Exception Code: 205
Missing requested Instance property "printLocation" for InstanceKey "{Different GUID}"
  -Stack Trace-
4

1 に答える 1

1

あなたは正しい道を進んでいると言えます。この場合の私のマッピングは

x.For<INotificationDispatcher>()
 .Use<PrintDispatcher>()
 .Ctor<string>()
    .Is(Settings.Default.Printer);
;

したがって、必要があるときはいつでもINotificationDispatcher、構成済みPrintDispatcherが返されます

于 2013-06-19T04:44:39.920 に答える