ASP.NET5 依赖注入 none 控制器 class
ASP.NET5 Dependency Injection into a none controller class
我正在努力让依赖注入在 none 控制器 class 中工作 ASP.NET 5.
我正在尝试在 ResponseWriter.
中注入 IHelloMessage 的一个实例
我在startup.cs中有以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IHelloMessage, HelloMessage>();
}
public void Configure(IApplicationBuilder app)
{
app.Run(async context =>
{
await Task.Run(() =>
{
new ResponseWriter().Write(context);
});
});
}
我在ResponseWriter.cs中有以下代码:
public class ResponseWriter
{
public IHelloMessage HelloMessage { get; set; }
public ResponseWriter()
{
}
public ResponseWriter(IHelloMessage helloMessage)
{
HelloMessage = helloMessage;
}
public void Write(HttpContext HttpContext)
{
HttpContext.Response.WriteAsync(HelloMessage.Text);
}
}
这是 HelloMessage 的代码:
public interface IHelloMessage
{
string Text { get; set; }
}
public class HelloMessage : IHelloMessage
{
public string Text { get; set; }
public HelloMessage()
{
Text = "Hello world at " + DateTime.Now.ToString();
}
}
当我 运行 应用程序时,出现以下错误:
我确定我遗漏了一些愚蠢的东西 - 任何帮助将不胜感激!
您正在调用无参数构造函数:new ResponseWriter().Write(context);
因此您的 HelloMessage 为空。
如果你想使用依赖注入,你必须使用 IAppBuilder.ApplicationService.GetService
或 IAppBuilder.ApplicationService.GetRequiredService
方法
您的statup.cs可以是:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IHelloMessage, HelloMessage>();
}
public void Configure(IApplicationBuilder app)
{
app.Run(async context =>
{
await Task.Run(() =>
{
new ResponseWriter(app.ApplicationServices.GetRequiredService<IHelloMessage>()).Write(context);
});
});
}
我正在努力让依赖注入在 none 控制器 class 中工作 ASP.NET 5.
我正在尝试在 ResponseWriter.
中注入 IHelloMessage 的一个实例我在startup.cs中有以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IHelloMessage, HelloMessage>();
}
public void Configure(IApplicationBuilder app)
{
app.Run(async context =>
{
await Task.Run(() =>
{
new ResponseWriter().Write(context);
});
});
}
我在ResponseWriter.cs中有以下代码:
public class ResponseWriter
{
public IHelloMessage HelloMessage { get; set; }
public ResponseWriter()
{
}
public ResponseWriter(IHelloMessage helloMessage)
{
HelloMessage = helloMessage;
}
public void Write(HttpContext HttpContext)
{
HttpContext.Response.WriteAsync(HelloMessage.Text);
}
}
这是 HelloMessage 的代码:
public interface IHelloMessage
{
string Text { get; set; }
}
public class HelloMessage : IHelloMessage
{
public string Text { get; set; }
public HelloMessage()
{
Text = "Hello world at " + DateTime.Now.ToString();
}
}
当我 运行 应用程序时,出现以下错误:
我确定我遗漏了一些愚蠢的东西 - 任何帮助将不胜感激!
您正在调用无参数构造函数:new ResponseWriter().Write(context);
因此您的 HelloMessage 为空。
如果你想使用依赖注入,你必须使用 IAppBuilder.ApplicationService.GetService
或 IAppBuilder.ApplicationService.GetRequiredService
方法
您的statup.cs可以是:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IHelloMessage, HelloMessage>();
}
public void Configure(IApplicationBuilder app)
{
app.Run(async context =>
{
await Task.Run(() =>
{
new ResponseWriter(app.ApplicationServices.GetRequiredService<IHelloMessage>()).Write(context);
});
});
}