在C#环境中,你可以使用Microsoft.Extensions.DependencyInjection库来实现依赖注入(DI)
首先,创建一个接口和实现类:
public interface IMessageService
{
string GetMessage();
}
public class EmailService : IMessageService
{
public string GetMessage()
{
return "Hello from EmailService!";
}
}
接下来,创建一个使用该接口的类:
public class MessageController
{
private readonly IMessageService _messageService;
public MessageController(IMessageService messageService)
{
_messageService = messageService;
}
public string GetMessage()
{
return _messageService.GetMessage();
}
}
现在,我们需要设置依赖注入容器。在你的应用程序启动时,配置服务并将其注册到容器中:
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMessageService, EmailService>();
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
在这个例子中,我们使用AddTransient
方法将EmailService
实例注册为IMessageService
接口的短暂作用域实现。这意味着每次请求时,都会创建一个新的EmailService
实例。
最后,在你的应用程序中使用MessageController
:
public class HomeController : Controller
{
private readonly MessageController _messageController;
public HomeController(MessageController messageController)
{
_messageController = messageController;
}
public IActionResult Index()
{
var message = _messageController.GetMessage();
return View(message);
}
}
现在,当你在HomeController
中调用GetMessage
方法时,它将通过依赖注入获取IMessageService
实例,并使用EmailService
实现。这样,你就可以在C#环境中模拟Spring依赖注入了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。