diff --git a/OptionStudy.Next/Configs/appsettings.custom.json b/OptionStudy.Next/Configs/appsettings.custom.json
index 1cb9db7..ded94f9 100644
--- a/OptionStudy.Next/Configs/appsettings.custom.json
+++ b/OptionStudy.Next/Configs/appsettings.custom.json
@@ -1,5 +1,5 @@
{
- "AppName": "customAppNmae",
+ "AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",
diff --git a/OptionStudy.Next/Configs/appsettings.development.json b/OptionStudy.Next/Configs/appsettings.development.json
index fd26658..4fe7294 100644
--- a/OptionStudy.Next/Configs/appsettings.development.json
+++ b/OptionStudy.Next/Configs/appsettings.development.json
@@ -1,5 +1,5 @@
{
- "AppName": "developmentAppNmae",
+ "AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",
diff --git a/OptionStudy.Next/Configs/appsettings.json b/OptionStudy.Next/Configs/appsettings.json
index 3b859c1..caff2d8 100644
--- a/OptionStudy.Next/Configs/appsettings.json
+++ b/OptionStudy.Next/Configs/appsettings.json
@@ -1,5 +1,5 @@
{
- "AppName": "JsonAppNmae",
+ "AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",
diff --git a/OptionStudy.Next/Configs/appsettings.product.json b/OptionStudy.Next/Configs/appsettings.product.json
index 48639b5..8ceca6e 100644
--- a/OptionStudy.Next/Configs/appsettings.product.json
+++ b/OptionStudy.Next/Configs/appsettings.product.json
@@ -1,5 +1,5 @@
{
- "AppName": "productAppNmae",
+ "AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",
diff --git a/OptionStudy.UnitApp/Configs/appsettings.custom.json b/OptionStudy.UnitApp/Configs/appsettings.custom.json
index 1cb9db7..ded94f9 100644
--- a/OptionStudy.UnitApp/Configs/appsettings.custom.json
+++ b/OptionStudy.UnitApp/Configs/appsettings.custom.json
@@ -1,5 +1,5 @@
{
- "AppName": "customAppNmae",
+ "AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",
diff --git a/OptionStudy.UnitApp/Configs/appsettings.development.json b/OptionStudy.UnitApp/Configs/appsettings.development.json
index fd26658..4fe7294 100644
--- a/OptionStudy.UnitApp/Configs/appsettings.development.json
+++ b/OptionStudy.UnitApp/Configs/appsettings.development.json
@@ -1,5 +1,5 @@
{
- "AppName": "developmentAppNmae",
+ "AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",
diff --git a/OptionStudy.UnitApp/Configs/appsettings.json b/OptionStudy.UnitApp/Configs/appsettings.json
index 3b859c1..caff2d8 100644
--- a/OptionStudy.UnitApp/Configs/appsettings.json
+++ b/OptionStudy.UnitApp/Configs/appsettings.json
@@ -1,5 +1,5 @@
{
- "AppName": "JsonAppNmae",
+ "AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",
diff --git a/OptionStudy.UnitApp/Configs/appsettings.product.json b/OptionStudy.UnitApp/Configs/appsettings.product.json
index 48639b5..8ceca6e 100644
--- a/OptionStudy.UnitApp/Configs/appsettings.product.json
+++ b/OptionStudy.UnitApp/Configs/appsettings.product.json
@@ -1,5 +1,5 @@
{
- "AppName": "productAppNmae",
+ "AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",
diff --git a/OptionStudy.UnitApp/DynamicLoadConfigFileTest.cs b/OptionStudy.UnitApp/DynamicLoadConfigFileTest.cs
index 13eed5f..5fde583 100644
--- a/OptionStudy.UnitApp/DynamicLoadConfigFileTest.cs
+++ b/OptionStudy.UnitApp/DynamicLoadConfigFileTest.cs
@@ -32,7 +32,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
- Assert.Equal($"{env}AppNmae", appOption.AppName);
+ Assert.Equal($"{env}AppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节:父配置对象的属性名必须和配置KEY保持一致,否则不能自动绑定。
@@ -79,7 +79,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
- Assert.Equal($"{envValue}AppNmae", appOption.AppName);
+ Assert.Equal($"{envValue}AppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节:父配置对象的属性名必须和配置KEY保持一致,否则不能自动绑定。
diff --git a/OptionStudy.UnitApp/LoadConfigFileTest.cs b/OptionStudy.UnitApp/LoadConfigFileTest.cs
index 326bf61..58e647c 100644
--- a/OptionStudy.UnitApp/LoadConfigFileTest.cs
+++ b/OptionStudy.UnitApp/LoadConfigFileTest.cs
@@ -35,7 +35,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
- Assert.Equal("JsonAppNmae", appOption.AppName);
+ Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节:父配置对象的属性名必须和配置KEY保持一致,否则不能自动绑定。
@@ -63,7 +63,7 @@ namespace OptionStudy.UnitApp
//断言
Assert.NotNull(appOption);
- Assert.Equal("JsonAppNmae", appOption.AppName);
+ Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal("0.0.0.1", appOption.AppVersion);
//子配置节:父配置对象的属性名必须和配置KEY保持一致,否则不能自动绑定。
diff --git a/OptionsPattern.Sutdy.Advanced/2选项模型/OptionsFactoryTest.cs b/OptionsPattern.Sutdy.Advanced/2选项模型/OptionsFactoryTest.cs
new file mode 100644
index 0000000..5a8cc03
--- /dev/null
+++ b/OptionsPattern.Sutdy.Advanced/2选项模型/OptionsFactoryTest.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using Xunit;
+
+namespace OptionsPattern.Sutdy.Advanced
+{
+ public class OptionsFactoryTest : IDisposable
+ {
+ private readonly ITestOutputHelper? _output;
+ public OptionsFactoryTest(ITestOutputHelperAccessor outputHelperAccessor)
+ {
+ if (outputHelperAccessor == null)
+ {
+ throw new ArgumentNullException(nameof(outputHelperAccessor));
+ }
+ _output = outputHelperAccessor.Output;
+ }
+
+ [Fact]
+ public void Test()
+ {
+ }
+
+ public void Dispose()
+ {
+
+ }
+ }
+}
diff --git a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.custom.json b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.custom.json
index 1cb9db7..ded94f9 100644
--- a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.custom.json
+++ b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.custom.json
@@ -1,5 +1,5 @@
{
- "AppName": "customAppNmae",
+ "AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",
diff --git a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.development.json b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.development.json
index fd26658..4fe7294 100644
--- a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.development.json
+++ b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.development.json
@@ -1,5 +1,5 @@
{
- "AppName": "developmentAppNmae",
+ "AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",
diff --git a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.json b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.json
index 3b859c1..caff2d8 100644
--- a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.json
+++ b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.json
@@ -1,5 +1,5 @@
{
- "AppName": "JsonAppNmae",
+ "AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",
diff --git a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.product.json b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.product.json
index 48639b5..8ceca6e 100644
--- a/OptionsPattern.Sutdy.Advanced/Configs/appsettings.product.json
+++ b/OptionsPattern.Sutdy.Advanced/Configs/appsettings.product.json
@@ -1,5 +1,5 @@
{
- "AppName": "productAppNmae",
+ "AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",
diff --git a/OptionsPattern.Sutdy.Advanced/OptionsPattern.Sutdy.Advanced.csproj b/OptionsPattern.Sutdy.Advanced/OptionsPattern.Sutdy.Advanced.csproj
index 536ed7f..f1cc855 100644
--- a/OptionsPattern.Sutdy.Advanced/OptionsPattern.Sutdy.Advanced.csproj
+++ b/OptionsPattern.Sutdy.Advanced/OptionsPattern.Sutdy.Advanced.csproj
@@ -61,4 +61,8 @@
+
+
+
+
diff --git a/OptionsPattern.Sutdy.Advanced/Startup.cs b/OptionsPattern.Sutdy.Advanced/Startup.cs
index e210f35..67c0108 100644
--- a/OptionsPattern.Sutdy.Advanced/Startup.cs
+++ b/OptionsPattern.Sutdy.Advanced/Startup.cs
@@ -19,12 +19,6 @@ namespace OptionsPattern.Sutdy.Advanced
{
public class Startup
{
- //生成主机方法
- //public IHostBuilder CreateHostBuilder()
- //{
-
- //}
-
///
/// 配置主机方法
/// 内部可以配置 IConfiguration
@@ -40,25 +34,15 @@ namespace OptionsPattern.Sutdy.Advanced
//设置应用配置
hostBuilder.ConfigureAppConfiguration((context, builder) =>
{
-
+ builder
+ .AddEnvironmentVariables()
+ .AddJsonFile("Configs/appsettings.json",false,true)
+ .AddJsonFile($"Configs/appsettings.{context.HostingEnvironment.EnvironmentName}.json",true,true)
+ .Build()
+ ;
});
-
- //集成 Opentelemetry
- //var tracerProvider = Sdk.CreateTracerProviderBuilder()
- // .AddSource("Xunit.DependencyInjection")
- // .AddConsoleExporter();
-
}
- ///
- /// 配置服务方法
- /// (不支持重载)
- ///
- //public void ConfigureServices(IServiceCollection services)
- //{
-
- //}
-
///
/// 配置服务方法
/// 注入或用途 IConfiguration IHostEnvironment 请使用 context.xx;
diff --git a/OptionsPattern.Sutdy.Advanced/UseXunitTest.cs b/OptionsPattern.Sutdy.Advanced/UseXunitTest.cs
index 810e219..3922469 100644
--- a/OptionsPattern.Sutdy.Advanced/UseXunitTest.cs
+++ b/OptionsPattern.Sutdy.Advanced/UseXunitTest.cs
@@ -3,13 +3,21 @@ namespace OptionsPattern.Sutdy.Advanced
public class UseXunitTest:IDisposable
{
private readonly ITestOutputHelper? _output;
- public UseXunitTest(ITestOutputHelperAccessor outputHelperAccessor)
+ private readonly IConfiguration _defaultConfig;
+ public UseXunitTest(ITestOutputHelperAccessor outputHelperAccessor,IConfiguration configuration)
{
if (outputHelperAccessor == null)
{
throw new ArgumentNullException(nameof(outputHelperAccessor));
}
+
+ if (outputHelperAccessor == null)
+ {
+ throw new ArgumentNullException($" {nameof(outputHelperAccessor)} Ϊ null, Startup.cs ע IConfiguration");
+ }
+
_output = outputHelperAccessor.Output;
+ _defaultConfig = configuration;
}
@@ -23,6 +31,21 @@ namespace OptionsPattern.Sutdy.Advanced
_output?.WriteLine("6.2 ѡ ף");
}
+ ///
+ /// IoCлȡĬ
+ /// 1 Xunit.DependencyInjection
+ /// 2Startup.cs Ĭ
+ ///
+ [Fact]
+ public void GetIConfiguration_FromDI_ByStartup_Test()
+ {
+ var appOption = _defaultConfig.Get();
+
+ Assert.NotNull(_defaultConfig);
+ Assert.NotNull(appOption);
+ Assert.Contains(nameof(AppOption.AppName), appOption.AppName);
+ }
+
///
/// Բ쳣
/// ʹãxUnit ͨ
diff --git a/OptionsPattern.Sutdy.Experience.ConsoleApp/appsettings.json b/OptionsPattern.Sutdy.Experience.ConsoleApp/appsettings.json
index 3b859c1..caff2d8 100644
--- a/OptionsPattern.Sutdy.Experience.ConsoleApp/appsettings.json
+++ b/OptionsPattern.Sutdy.Experience.ConsoleApp/appsettings.json
@@ -1,5 +1,5 @@
{
- "AppName": "JsonAppNmae",
+ "AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",
diff --git a/OptionsPattern.Sutdy.Experience/Configs/appsettings.custom.json b/OptionsPattern.Sutdy.Experience/Configs/appsettings.custom.json
index 1cb9db7..ded94f9 100644
--- a/OptionsPattern.Sutdy.Experience/Configs/appsettings.custom.json
+++ b/OptionsPattern.Sutdy.Experience/Configs/appsettings.custom.json
@@ -1,5 +1,5 @@
{
- "AppName": "customAppNmae",
+ "AppName": "customAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "custom@163.com",
diff --git a/OptionsPattern.Sutdy.Experience/Configs/appsettings.development.json b/OptionsPattern.Sutdy.Experience/Configs/appsettings.development.json
index fd26658..4fe7294 100644
--- a/OptionsPattern.Sutdy.Experience/Configs/appsettings.development.json
+++ b/OptionsPattern.Sutdy.Experience/Configs/appsettings.development.json
@@ -1,5 +1,5 @@
{
- "AppName": "developmentAppNmae",
+ "AppName": "developmentAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "development@163.com",
diff --git a/OptionsPattern.Sutdy.Experience/Configs/appsettings.json b/OptionsPattern.Sutdy.Experience/Configs/appsettings.json
index 3b859c1..caff2d8 100644
--- a/OptionsPattern.Sutdy.Experience/Configs/appsettings.json
+++ b/OptionsPattern.Sutdy.Experience/Configs/appsettings.json
@@ -1,5 +1,5 @@
{
- "AppName": "JsonAppNmae",
+ "AppName": "JsonAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "json@163.com",
diff --git a/OptionsPattern.Sutdy.Experience/Configs/appsettings.product.json b/OptionsPattern.Sutdy.Experience/Configs/appsettings.product.json
index 48639b5..8ceca6e 100644
--- a/OptionsPattern.Sutdy.Experience/Configs/appsettings.product.json
+++ b/OptionsPattern.Sutdy.Experience/Configs/appsettings.product.json
@@ -1,5 +1,5 @@
{
- "AppName": "productAppNmae",
+ "AppName": "productAppName",
"AppVersion": "0.0.0.1",
"EMail": {
"ReceiveAddress": "product@163.com",
diff --git a/OptionsPattern.Sutdy.Experience/OptionsPatternTest.cs b/OptionsPattern.Sutdy.Experience/OptionsPatternTest.cs
index d6dabe5..36071d1 100644
--- a/OptionsPattern.Sutdy.Experience/OptionsPatternTest.cs
+++ b/OptionsPattern.Sutdy.Experience/OptionsPatternTest.cs
@@ -40,7 +40,7 @@ namespace OptionsPattern.Sutdy.Experience
Assert.NotNull(configuration);
Assert.NotNull(appOption);
- Assert.Equal("JsonAppNmae", appOption.AppName);
+ Assert.Equal("JsonAppName", appOption.AppName);
Assert.Equal(new Version(0,0,0,1), appOption.AppVersion);
Assert.Equal("json@163.com", appOption.EMail?.ReceiveAddress);
Assert.Equal("json", appOption.EMail?.Recipient);
diff --git a/框架揭秘.sln b/框架揭秘.sln
index 30c08e8..19644d0 100644
--- a/框架揭秘.sln
+++ b/框架揭秘.sln
@@ -37,11 +37,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionStudy.UnitApp", "Opti
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionStudy.Next", "OptionStudy.Next\OptionStudy.Next.csproj", "{559F6F82-A440-4D85-9F04-01CE26B1A6E6}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.Experience", "OptionsPattern.Sutdy.Experience\OptionsPattern.Sutdy.Experience.csproj", "{9C73DFBD-E1BC-4B27-84AA-35848088D888}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Experience", "OptionsPattern.Sutdy.Experience\OptionsPattern.Sutdy.Experience.csproj", "{9C73DFBD-E1BC-4B27-84AA-35848088D888}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.Experience.ConsoleApp", "OptionsPattern.Sutdy.Experience.ConsoleApp\OptionsPattern.Sutdy.Experience.ConsoleApp.csproj", "{703D8C74-2B39-470B-9108-A36FF8263FAE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Experience.ConsoleApp", "OptionsPattern.Sutdy.Experience.ConsoleApp\OptionsPattern.Sutdy.Experience.ConsoleApp.csproj", "{703D8C74-2B39-470B-9108-A36FF8263FAE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptionsPattern.Sutdy.AdvancedAdvanced", "OptionsPattern.Sutdy.Advanced\OptionsPattern.Sutdy.Advanced.csproj", "{D5744BA1-4D24-4D4D-A479-2293DEB7A8CF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OptionsPattern.Sutdy.Advanced", "OptionsPattern.Sutdy.Advanced\OptionsPattern.Sutdy.Advanced.csproj", "{D5744BA1-4D24-4D4D-A479-2293DEB7A8CF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -74,6 +74,7 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
+ {E9FE0FBE-0E22-4C3D-ACF3-7538EDA1FB2A} = {8684FFF4-D613-45AE-8CBF-D6370CB034C3}
{FA9BF369-7571-4A25-A1B4-AB69088BDE3C} = {97685B5C-8532-48B0-A813-3CC629F31FD3}
{4892AF59-813D-4957-9ADC-72871AC58C68} = {97685B5C-8532-48B0-A813-3CC629F31FD3}
{E3F8F3F8-F4A9-42EA-8AA5-862B0754A1B3} = {6F45CE67-FAA8-4FF8-87C9-E8752B0734BF}