ASP.NET Core denetleyicilere bağımlılık ekleme
By shadi Namrouti, Rick Andersonve Steve Smith
ASP.NET Core MVC denetleyicileri, oluşturucular aracılığıyla bağımlılıkları doğrudan ister. ASP.NET Core, bağımlılık ekleme (dı)için yerleşik desteğe sahiptir. Dı, uygulamaların test ve bakımını daha kolay hale getirir.
Örnek kodu görüntüleme veya indirme (nasıl indirileceği)
Oluşturucu Ekleme
Hizmetler bir oluşturucu parametresi olarak eklenir ve çalışma zamanı hizmeti hizmet kapsayıcısından çözer. Hizmetler genellikle arabirimler kullanılarak tanımlanır. Örneğin, geçerli zamanı gerektiren bir uygulamayı düşünün. Aşağıdaki Arabirim hizmeti kullanıma sunar IDateTime :
public interface IDateTime
{
DateTime Now { get; }
}
Aşağıdaki kod IDateTime arabirimini uygular:
public class SystemDateTime : IDateTime
{
public DateTime Now
{
get { return DateTime.Now; }
}
}
Hizmeti hizmet kapsayıcısına ekleyin:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IDateTime, SystemDateTime>();
services.AddControllersWithViews();
}
Hakkında daha fazla bilgi için AddSingleton bkz. dı hizmeti yaşam süreleri.
Aşağıdaki kod, günün saatine göre kullanıcıya bir karşılama görüntüler:
public class HomeController : Controller
{
private readonly IDateTime _dateTime;
public HomeController(IDateTime dateTime)
{
_dateTime = dateTime;
}
public IActionResult Index()
{
var serverTime = _dateTime.Now;
if (serverTime.Hour < 12)
{
ViewData["Message"] = "It's morning here - Good Morning!";
}
else if (serverTime.Hour < 17)
{
ViewData["Message"] = "It's afternoon here - Good Afternoon!";
}
else
{
ViewData["Message"] = "It's evening here - Good Evening!";
}
return View();
}
Uygulamayı çalıştırın ve zamana göre bir ileti görüntülenir.
FromServices ile eylem ekleme
, FromServicesAttribute Oluşturucu Ekleme kullanılmadan ekleme a hizmetini doğrudan bir eylem yöntemine sunar:
public IActionResult About([FromServices] IDateTime dateTime)
{
return Content( $"Current server time: {dateTime.Now}");
}
Denetleyiciden erişim ayarları
Bir denetleyici içinden uygulama veya yapılandırma ayarlarına erişmek ortak bir modeldir. ' Da açıklanan Seçenekler deseninin ASP.NET Core'da seçenek deseni ayarları yönetmek için tercih edilen yaklaşım vardır. Genellikle, IConfiguration bir denetleyiciye doğrudan eklemeyin.
Seçenekleri temsil eden bir sınıf oluşturun. Örnek:
public class SampleWebSettings
{
public string Title { get; set; }
public int Updates { get; set; }
}
Yapılandırma sınıfını hizmetler koleksiyonuna ekleyin:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IDateTime, SystemDateTime>();
services.Configure<SampleWebSettings>(Configuration);
services.AddControllersWithViews();
}
Bir JSON biçimli dosyadan ayarları okumak için uygulamayı yapılandırın:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("samplewebsettings.json",
optional: false,
reloadOnChange: true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Aşağıdaki kod, IOptions<SampleWebSettings> hizmet kapsayıcısından ayarları ister ve bu yöntemleri kullanarak kullanır Index :
public class SettingsController : Controller
{
private readonly SampleWebSettings _settings;
public SettingsController(IOptions<SampleWebSettings> settingsOptions)
{
_settings = settingsOptions.Value;
}
public IActionResult Index()
{
ViewData["Title"] = _settings.Title;
ViewData["Updates"] = _settings.Updates;
return View();
}
}
Ek kaynaklar
ASP.NET Core 'de test denetleyicisi mantığıDenetleyicilerde açıkça bağımlılıklar isteyerek kodu daha kolay test etme hakkında bilgi edinmek için bkz..
Varsayılan bağımlılık ekleme kapsayıcısını üçüncü taraf bir uygulamayla değiştirin.
By shadi Namrouti, Rick Andersonve Steve Smith
ASP.NET Core MVC denetleyicileri, oluşturucular aracılığıyla bağımlılıkları doğrudan ister. ASP.NET Core, bağımlılık ekleme (dı)için yerleşik desteğe sahiptir. Dı, uygulamaların test ve bakımını daha kolay hale getirir.
Örnek kodu görüntüleme veya indirme (nasıl indirileceği)
Oluşturucu Ekleme
Hizmetler bir oluşturucu parametresi olarak eklenir ve çalışma zamanı hizmeti hizmet kapsayıcısından çözer. Hizmetler genellikle arabirimler kullanılarak tanımlanır. Örneğin, geçerli zamanı gerektiren bir uygulamayı düşünün. Aşağıdaki Arabirim hizmeti kullanıma sunar IDateTime :
public interface IDateTime
{
DateTime Now { get; }
}
Aşağıdaki kod IDateTime arabirimini uygular:
public class SystemDateTime : IDateTime
{
public DateTime Now
{
get { return DateTime.Now; }
}
}
Hizmeti hizmet kapsayıcısına ekleyin:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IDateTime, SystemDateTime>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Hakkında daha fazla bilgi için AddSingleton bkz. dı hizmeti yaşam süreleri.
Aşağıdaki kod, günün saatine göre kullanıcıya bir karşılama görüntüler:
public class HomeController : Controller
{
private readonly IDateTime _dateTime;
public HomeController(IDateTime dateTime)
{
_dateTime = dateTime;
}
public IActionResult Index()
{
var serverTime = _dateTime.Now;
if (serverTime.Hour < 12)
{
ViewData["Message"] = "It's morning here - Good Morning!";
}
else if (serverTime.Hour < 17)
{
ViewData["Message"] = "It's afternoon here - Good Afternoon!";
}
else
{
ViewData["Message"] = "It's evening here - Good Evening!";
}
return View();
}
Uygulamayı çalıştırın ve zamana göre bir ileti görüntülenir.
FromServices ile eylem ekleme
, FromServicesAttribute Oluşturucu Ekleme kullanılmadan ekleme a hizmetini doğrudan bir eylem yöntemine sunar:
public IActionResult About([FromServices] IDateTime dateTime)
{
ViewData["Message"] = $"Current server time: {dateTime.Now}";
return View();
}
Denetleyiciden erişim ayarları
Bir denetleyici içinden uygulama veya yapılandırma ayarlarına erişmek ortak bir modeldir. ' Da açıklanan Seçenekler deseninin ASP.NET Core'da seçenek deseni ayarları yönetmek için tercih edilen yaklaşım vardır. Genellikle, IConfiguration bir denetleyiciye doğrudan eklemeyin.
Seçenekleri temsil eden bir sınıf oluşturun. Örnek:
public class SampleWebSettings
{
public string Title { get; set; }
public int Updates { get; set; }
}
Yapılandırma sınıfını hizmetler koleksiyonuna ekleyin:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IDateTime, SystemDateTime>();
services.Configure<SampleWebSettings>(Configuration);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Bir JSON biçimli dosyadan ayarları okumak için uygulamayı yapılandırın:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("samplewebsettings.json",
optional: false, // File is not optional.
reloadOnChange: false);
})
.UseStartup<Startup>();
}
Aşağıdaki kod, IOptions<SampleWebSettings> hizmet kapsayıcısından ayarları ister ve bu yöntemleri kullanarak kullanır Index :
public class SettingsController : Controller
{
private readonly SampleWebSettings _settings;
public SettingsController(IOptions<SampleWebSettings> settingsOptions)
{
_settings = settingsOptions.Value;
}
public IActionResult Index()
{
ViewData["Title"] = _settings.Title;
ViewData["Updates"] = _settings.Updates;
return View();
}
}
Ek kaynaklar
ASP.NET Core 'de test denetleyicisi mantığıDenetleyicilerde açıkça bağımlılıklar isteyerek kodu daha kolay test etme hakkında bilgi edinmek için bkz..
Varsayılan bağımlılık ekleme kapsayıcısını üçüncü taraf bir uygulamayla değiştirin.