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}