我正在使用ASP.NET MVC 2来实现Web服务,我有一个自定义的JsonResult
类:
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
来进行序列化。
我正在使用Ninject作为我的IoC容器。但是,我不确定应该如何注入ISerializer
依赖项。我原本是这样做的:
var kernel = new StandardKernel().Bind<ISerializer>().To<JsonNetSerializer>();
JsonResult.Serializer = kernel.Get<ISerializer>();
但有些事情似乎并不恰当。那么我将如何正确地注入Serializer
属性呢?我想在应用程序启动时只注入一次。
答案 0 :(得分:4)
抱歉,MVC不是我的联盟,但是有一些原因导致您无法删除static
修饰符,将JsonNetSerializer
的生命周期设置为单例,并将其注入到构造函数中JsonResult
?特别要注意,这使得对ISerializer
的依赖显式(一件好事)并避免static
(一件好事)。