您好,登錄后才能下訂單哦!
在C#環(huán)境中,你可以使用Microsoft.Extensions.DependencyInjection庫來實現(xiàn)依賴注入(DI)
首先,創(chuàng)建一個接口和實現(xiàn)類:
public interface IMessageService
{
string GetMessage();
}
public class EmailService : IMessageService
{
public string GetMessage()
{
return "Hello from EmailService!";
}
}
接下來,創(chuàng)建一個使用該接口的類:
public class MessageController
{
private readonly IMessageService _messageService;
public MessageController(IMessageService messageService)
{
_messageService = messageService;
}
public string GetMessage()
{
return _messageService.GetMessage();
}
}
現(xiàn)在,我們需要設置依賴注入容器。在你的應用程序啟動時,配置服務并將其注冊到容器中:
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
接口的短暫作用域實現(xiàn)。這意味著每次請求時,都會創(chuàng)建一個新的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);
}
}
現(xiàn)在,當你在HomeController
中調用GetMessage
方法時,它將通過依賴注入獲取IMessageService
實例,并使用EmailService
實現(xiàn)。這樣,你就可以在C#環(huán)境中模擬Spring依賴注入了。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。