diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/ILLink/ILLink.Suppressions.xml b/src/libraries/Microsoft.Extensions.Hosting/src/ILLink/ILLink.Suppressions.xml deleted file mode 100644 index 7e836fa766461d..00000000000000 --- a/src/libraries/Microsoft.Extensions.Hosting/src/ILLink/ILLink.Suppressions.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - ILLink - IL2091 - member - F:Microsoft.Extensions.DependencyInjection.OptionsBuilderExtensions.<>c__DisplayClass1_0`1.options - - - ILLink - IL2091 - member - M:Microsoft.Extensions.DependencyInjection.OptionsBuilderExtensions.<>c__DisplayClass0_0`1.<ValidateOnStart>b__0(Microsoft.Extensions.DependencyInjection.ValidatorOptions,Microsoft.Extensions.Options.IOptionsMonitor{`0}) - - - diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs index 99d20caec83506..94c8115d1a7b7e 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs @@ -10,6 +10,8 @@ namespace Microsoft.Extensions.DependencyInjection /// /// Extension methods for adding configuration related options services to the DI container via . /// + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2091:UnrecognizedReflectionPattern", + Justification = "Workaround for https://github.com/mono/linker/issues/1416. Outer method has been annotated with DynamicallyAccessedMembers.")] public static class OptionsBuilderExtensions { /// @@ -28,23 +30,14 @@ public static class OptionsBuilderExtensions optionsBuilder.Services.AddHostedService(); optionsBuilder.Services.AddOptions() - .Configure>((vo, options) => ValidateOnStartHelper(vo, options, optionsBuilder)); + .Configure>((vo, options) => + { + // This adds an action that resolves the options value to force evaluation + // We don't care about the result as duplicates are not important + vo.Validators[typeof(TOptions)] = () => options.Get(optionsBuilder.Name); + }); return optionsBuilder; } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2091:UnrecognizedReflectionPattern", - Justification = "Workaround for https://github.com/mono/linker/issues/1416. Outer method has been annotated with DynamicallyAccessedMembers.")] - private static void ValidateOnStartHelper(ValidatorOptions vo, IOptionsMonitor options, OptionsBuilder optionsBuilder) - where TOptions : class - { - // This adds an action that resolves the options value to force evaluation - // We don't care about the result as duplicates are not important - vo.Validators[typeof(TOptions)] = () => GetOptionsMethod(options, optionsBuilder); - } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2091:UnrecognizedReflectionPattern", - Justification = "Workaround for https://github.com/mono/linker/issues/1416. Outer method has been annotated with DynamicallyAccessedMembers.")] - private static void GetOptionsMethod(IOptionsMonitor options, OptionsBuilder optionsBuilder) where TOptions : class => options.Get(optionsBuilder.Name); } }