Robotlegs/Signals を使用すると、このような警告メッセージが表示されます。このコマンド クラスが実行されるたびに、2 ~ 3 秒ごとに..このメッセージが以下に表示されます
このマッピングを意図的に上書きした場合は、このメッセージが表示されないようにするために、置換マッピングの前に「injector.unmap()」を使用できます。警告: インジェクターには、「」という名前のタイプ「mx.messaging.messages::IMessage」のルールが既にあります。
それ以外の場合、コマンドは正常に機能しますが、とにかく何か間違ったことをしていると思います。
public class MessageReceivedCommand extends SignalCommand
{
[Inject]
public var message:IMessage;
...etc.. do something with message..
}
ペイロードが正常に受信されることに加えて、 mapSignalClass のオプションしか表示されないため、アプリケーションコンテキストは IMessage をこのコマンドにマップしません。
このメッセージを修正または非表示にする方法を誰かが知っているかどうか疑問に思います. 警告が示唆するように、これを呼び出してみました
injector.unmap(IMessage, "")
しかし、エラーが表示されます - ::IMessage の "" という名前のマッピングが見つかりません。
ありがとう
編集:エラーに関するもう少しの情報
コマンドにディスパッチするシグナルは次のとおりです
public class GameMessageSignal extends Signal
{
public function GameMessageSignal()
{
super(IMessage);
}
}
IPushDataService クラスからディスパッチされる
gameMessage.dispatch(message.message);
実装はアプリのコンテキストで接続されています
injector.mapClass(IPushDataService, PushDataService);
信号と共に
signalCommandMap.mapSignalClass(GameMessageSignal, MessageReceivedCommand);
編集 #2: GameMessageSignal のインスタンスを IPushDataService に挿入することも指摘するとよいでしょう。
public class PushDataService extends BaseDataService implements IPushDataService
{
[Inject]
public var gameMessage:GameMessageSignal;
//then
private function processMessage(message:MessageEvent):void
{
gameMessage.dispatch(message.message);
}
}
編集:3
SignalContext で設定したマッピング:
injector.mapSingleton(IPushDataService);
injector.mapClass(IPushDataService, PushDataService);