```csharp
// console app
//NRT: nullable reference types
string s = "aaa";
Console.WriteLine(s.ToUpper());
string s2 = null;
Console.WriteLine(s2.ToUpper());
//string? s2 = null;
//Console.WriteLine(s2?.ToUpper());
//========================
// .csproject
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>
//======================
// WebsiteProfile.cs
public class WebsiteProfile
{
public string Email { get; set; } = "default@uuu.com.tw";
public string ThemeColor { get; set; } = "yellow";
}
// HomeController.cs
public class HomeController : Controller
{
readonly IOptions<WebsiteProfile> _options;
public HomeController(IOptions<WebsiteProfile> options)
{
_options = options;
}
public IActionResult Index()
{
return View(_options.Value);
}
}
// home/index.cshtml
@model Mod12.Models.WebsiteProfile
@{
ViewData["Title"] = "Home";
}
<h1>Home</h1>
<ul style="background-color:@Model.ThemeColor;">
<li>@Model.Email</li>
<li>@Model.ThemeColor</li>
</ul>
//===============================
// program.cs
builder.Services.Configure<WebsiteProfile>(o =>
{
o.Email = "config@uuu.com.tw";
o.ThemeColor = "lightblue";
});
//===============================
//appsettings.json
{
"email": "settings@uuu.com.tw",
"themeColor": "lightgreen",
// program.cs
builder.Services.AddControllersWithViews();
Services.Configure<WebsiteProfile>(builder.Configuration);
//===================
// homecontroller.cs
public class HomeController : Controller
{
readonly IOptionsSnapshot<WebsiteProfile> _options;
public HomeController(IOptionsSnapshot<WebsiteProfile> options)
{
_options = options;
}
public IActionResult Index()
{
return View(_options.Value);
}
}
//==========================
//profile.json
{
"email": "json@uuu.com.tw",
"themeColor": "pink"
}
//program.cs
builder.Configuration.AddJsonFile("profile.json", true, true);
//=========================
// program.cs
builder.Configuration.AddInMemoryCollection(new Dictionary<string, string>
{
["Email"]="memory@uuu.com.tw",
["ThemeColor"] = "orange",
});
//=======================
builder.Services.Configure<WebsiteProfile>(builder.Configuration);
builder.Configuration.AddJsonFile("profile.json",true,true);
builder.Configuration.AddInMemoryCollection(new Dictionary<string, string>
{
["Email"]="memory@uuu.com.tw",
["ThemeColor"] = "orange",
});
Console.WriteLine("==============================");
foreach (var item in (builder.Configuration as IConfigurationRoot).Providers)
{
Console.WriteLine(item);
}
Console.WriteLine("==============================");
//===============================
// profile.xml
<?xml version="1.0" encoding="utf-8" ?>
<root>
<email>xml@uuu.com.tw</email>
<themeColor>green</themeColor>
</root>
// program.cs
builder.Configuration.AddXmlFile("profile.xml", true, true);
//===============================
// profile.ini
email=ini@uuu.com.tw
themeColor=teal
// program.cs
builder.Configuration.AddIniFile("profile.ini", true, true);
//=============================
// homecontroller.cs
public class HomeController : Controller
{
readonly IOptionsSnapshot<WebsiteProfile> _options;
readonly IConfiguration _configuration;
public HomeController(IOptionsSnapshot<WebsiteProfile> options,
IConfiguration configuration)
{
_options = options;
_configuration = configuration;
}
public IActionResult GetEmail()
{
return Content(_configuration["email"]??"NULL");
}
public IActionResult Index()
{
return View(_options.Value);
}
}
//=============================
// home/index.cshtml
@model Mod12.Models.WebsiteProfile
@inject IConfiguration config
@{
ViewData["Title"] = "Home";
}
<h1>Home</h1>
<ul style="background-color:@Model.ThemeColor;">
<li>@Model.Email</li>
<li>@Model.ThemeColor</li>
<li>@config["email"]</li>
</ul>
//==============================
// HomeController.cs
//public IActionResult Index()
//{
// return View(_options.Value);
//}
public IActionResult Index()
{
WebsiteProfile profile=new ();
_configuration.Bind(profile);
return View(profile);
}
//==============================
// appsettings.json
{
"email": "xxxx@uuu.com.tw",
"themeColor": "teal",
"aaa": {
"bbb": {
"email": "zzzz@uuu.com.tw",
"themeColor": "purple"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
// homecontroller.cs
public IActionResult Index()
{
WebsiteProfile profile=new ();
_configuration.GetSection("aaa:bbb").Bind(profile);
return View(profile);
}
//===================================
//appsettings.json
{
"email": "xxxx@uuu.com.tw",
"themeColor": "teal",
"aaa": {
"bbb": {
"email": "zzzz@uuu.com.tw",
"themeColor": "purple"
"my.name": "zzzzzz"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
// websiteprofile.cs
public class WebsiteProfile
{
public string Email { get; set; } = "default@uuu.com.tw";
public string ThemeColor { get; set; } = "yellow";
[ConfigurationKeyName("My.Name")]
public string? MyName { get; set; }
}
// home/index.cshtml
@model Mod12.Models.WebsiteProfile
@{
ViewData["Title"] = "Home";
}
<h1>Home</h1>
<ul style="background-color:@Model.ThemeColor;">
<li>@Model.Email.ToUpper()</li>
<li>@Model.ThemeColor</li>
<li>@Model.MyName?.ToUpper()</li>
</ul>
```