我正在使用 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 容器。但是,我不太确定应该如何注入(inject) ISerializer
依赖项。我最初是这样做的:
var kernel = new StandardKernel().Bind<ISerializer>().To<JsonNetSerializer>();
JsonResult.Serializer = kernel.Get<ISerializer>();
但有些事情似乎不太对劲。那么我将如何正确地注入(inject) Serializer
属性呢?我只想在应用程序启动时注入(inject)一次。
最佳答案
抱歉,MVC 不是我的菜,但是有什么原因导致你不能删除 static
修饰符,将 JsonNetSerializer
的生命周期设置为单例,并且有注入(inject)到 JsonResult
的构造函数中?请特别注意,这使得对 ISerializer
的依赖变得明确(一件好事)并避免了 static
(一件好事)。
关于c# - 如何使用 Ninject 注入(inject)静态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231028/