私は、Webサービスを実装するためにASP.NET MVC 2を使用していると私は、カスタムJsonResult
クラスがあります。Ninjectを使用して静的プロパティを挿入するにはどうすればよいですか?
public abstract class JsonResult : ActionResult
{
public static ISerializer Serializer { get; set; }
public override void ExecuteResult(ControllerContext context)
{
var json = Serializer.Serialize(this);
context.HttpContext.Response.Write(json);
}
}
JsonResult
は、JSONデータにシリアル化する必要があるすべての結果の抽象基本クラスです。それはISerializer
を使用してシリアル化を行います。
私はIoCコンテナとしてNinjectを使用しています。しかし、私はどのようにしてISerializer
の依存関係を注入すべきかわかりません。私はもともとこれをやっていた:
var kernel = new StandardKernel().Bind<ISerializer>().To<JsonNetSerializer>();
JsonResult.Serializer = kernel.Get<ISerializer>();
しかし、それについては何かがちょうど正しいとは思わない。ですから、Serializer
プロパティを正しく注入するにはどうしたらいいですか?私はアプリケーションを起動するときに一度だけ注入したい。
これは、 'Serializer'プロパティをシングルトンとして保持するために、' IonCコンテナを使用して 'JsonResult'のインスタンスをインスタンス化する必要があることを意味していますか? –
@Daniel T .:できるだけ工場を使うべきです。ですから、 'ConcreteJsonResult'をインスタンス化しているクラスがあれば' JsonResultFactory'を取るべきです。もちろん、 'return kernel.Get();'の行に沿って 'JsonResultFactory.Create 'を実行するだけです。 –
jason
ありがとうございました。私のアプリケーションは非常にシンプルなので、工場を作ることは避けていますが、工場を使うことは不必要に複雑に思えますが、私はそれを試してみます。 –