パーサー内にファクトリメソッドがあります。基本的に、トークンをロードするときに、そのトークンのハンドラーを検索するか、デフォルトのハンドラーにドロップスルーします。私はこれをswitch
ととして実装しましたDictionary<string,Type>
が、どちらのアプローチでも、ハンドラークラス以外の場所にマッピングを保存する必要があります。
Ninject for IOCを使用しているので、次の方法でも実行できることに気付きました。
kernel.Get<ITokenHandler>(tokenName);
しかし、それでは、ハンドラーが2つの場所で処理できるトークンに関する情報を保存する必要はありません。ハンドラーを装飾して、これが自動的にマップされるようにする方法はありますか?