dependency injection

main
syneffort 2 years ago
parent dc11a29d4d
commit 3316af4b6f
  1. 35
      BlazorApp/AspNetCoreMVC/Controllers/HomeController.cs
  2. 41
      BlazorApp/AspNetCoreMVC/Models/Models.cs
  3. 6
      BlazorApp/AspNetCoreMVC/Program.cs

@ -8,13 +8,22 @@ namespace AspNetCoreMVC.Controllers
[Route("[controller]")] // 컨트롤러 이름 자동으로 따라감
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private IEnumerable<IBaseLogger> _baseLoggers;
public HomeController(ILogger<HomeController> logger)
public HomeController(IEnumerable<IBaseLogger> loggers)
{
_logger = logger;
_baseLoggers = loggers;
}
//private readonly ILogger<HomeController> _logger;
//public HomeController(ILogger<HomeController> logger)
//{
// _logger = logger;
//}
[Route("Index")]
[Route("/")]
public IActionResult Index()
{
//string url = Url.Action("Privacy", "Home");
@ -24,7 +33,25 @@ namespace AspNetCoreMVC.Controllers
//return RedirectToAction("Privacy");
return View();
//return View();
//FileLogger logger = new FileLogger(new FileLogSetting("log.txt"));
//logger.Log("Log Test");
foreach (var logger in _baseLoggers)
{
logger.Log("DI Log Test");
}
return Ok();
}
[Route("DITest")]
public IActionResult ActionDITest([FromServices] IBaseLogger logger)
{
logger.Log("Log Test");
return Ok();
}
public IActionResult Test()

@ -25,4 +25,45 @@ namespace AspNetCoreMVC.Models
[Display(Name = "Count")]
public int Count { get; set; }
}
public class FileLogSetting
{
private string _filename;
public FileLogSetting(string filename)
{
_filename = filename;
}
}
public class FileLogger : IBaseLogger
{
private FileLogSetting _setting;
public FileLogger(FileLogSetting settings)
{
_setting = settings;
}
public void Log(string log)
{
Console.WriteLine($"FileLog Ok {log}");
}
}
public class DbLogger : IBaseLogger
{
public DbLogger()
{
}
public void Log(string log)
{
Console.WriteLine($"DBLog Ok {log}");
}
}
public interface IBaseLogger
{
void Log(string log);
}
}

@ -1,3 +1,5 @@
using AspNetCoreMVC.Models;
namespace AspNetCoreMVC
{
public class Program
@ -9,6 +11,10 @@ namespace AspNetCoreMVC
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSingleton<IBaseLogger, FileLogger>();
builder.Services.AddSingleton<IBaseLogger, DbLogger>();
builder.Services.AddSingleton(new FileLogSetting("log.txt"));
var app = builder.Build();
//app.UseStaticFiles();

Loading…
Cancel
Save