From 9dd0125dd740b26b597cb8d51347b9f6e001cfc4 Mon Sep 17 00:00:00 2001 From: dotnetjunkie Date: Fri, 24 May 2024 14:30:19 +0200 Subject: [PATCH] Cleanup up code using newer C# syntax. --- ...ConstructorResolutionBehaviorExtensions.cs | 3 +- src/SimpleInjector/Container.Common.cs | 50 +++++-------------- .../Container.Registration.Batch.cs | 35 ++++--------- src/SimpleInjector/Container.Registration.cs | 6 +-- src/SimpleInjector/ContainerOptions.cs | 8 +-- src/SimpleInjector/IsExternalInit.cs | 8 +++ 6 files changed, 37 insertions(+), 73 deletions(-) create mode 100644 src/SimpleInjector/IsExternalInit.cs diff --git a/src/SimpleInjector/ConstructorResolutionBehaviorExtensions.cs b/src/SimpleInjector/ConstructorResolutionBehaviorExtensions.cs index 92e4e2f57..a2f055a3d 100644 --- a/src/SimpleInjector/ConstructorResolutionBehaviorExtensions.cs +++ b/src/SimpleInjector/ConstructorResolutionBehaviorExtensions.cs @@ -40,8 +40,7 @@ public static ConstructorInfo GetConstructor( } private static ActivationException BuildActivationException( - IConstructorResolutionBehavior behavior, Type implementationType, string? message) => - new ActivationException( + IConstructorResolutionBehavior behavior, Type implementationType, string? message) => new( message is null || string.IsNullOrWhiteSpace(message) ? StringResources.TypeHasNoInjectableConstructorAccordingToCustomResolutionBehavior( behavior, implementationType) diff --git a/src/SimpleInjector/Container.Common.cs b/src/SimpleInjector/Container.Common.cs index 536099c2e..e68264799 100644 --- a/src/SimpleInjector/Container.Common.cs +++ b/src/SimpleInjector/Container.Common.cs @@ -709,35 +709,21 @@ where StringComparer.OrdinalIgnoreCase.Equals(friendlyName, missingTypeDefName) select type; } - private sealed class ContextualResolveInterceptor + private sealed class ContextualResolveInterceptor( + ResolveInterceptor interceptor, Predicate predicate) { - public readonly ResolveInterceptor Interceptor; - public readonly Predicate Predicate; - - public ContextualResolveInterceptor( - ResolveInterceptor interceptor, Predicate predicate) - { - this.Interceptor = interceptor; - this.Predicate = predicate; - } + public readonly ResolveInterceptor Interceptor = interceptor; + public readonly Predicate Predicate = predicate; } - private sealed class TypedInstanceInitializer : IInstanceInitializer + private sealed class TypedInstanceInitializer(Type serviceType, object instanceInitializer) + : IInstanceInitializer { - private readonly Type serviceType; - private readonly object instanceInitializer; - - private TypedInstanceInitializer(Type serviceType, object instanceInitializer) - { - this.serviceType = serviceType; - this.instanceInitializer = instanceInitializer; - } - public bool AppliesTo(Type implementationType, InitializerContext context) => - Types.GetTypeHierarchyFor(implementationType).Contains(this.serviceType); + Types.GetTypeHierarchyFor(implementationType).Contains(serviceType); public Action CreateAction(InitializerContext context) => - Helpers.CreateAction(this.instanceInitializer); + Helpers.CreateAction(instanceInitializer); internal static IInstanceInitializer Create(Action initializer) { @@ -745,24 +731,14 @@ internal static IInstanceInitializer Create(Action predicate; - private readonly Action instanceInitializer; - - private ContextualInstanceInitializer( + private sealed class ContextualInstanceInitializer( Predicate predicate, - Action instanceInitializer) - { - this.predicate = predicate; - this.instanceInitializer = instanceInitializer; - } - - public bool AppliesTo(Type implementationType, InitializerContext context) => - this.predicate(context); + Action instanceInitializer) : IInstanceInitializer + { + public bool AppliesTo(Type implementationType, InitializerContext context) => predicate(context); public Action CreateAction(InitializerContext context) => - instance => this.instanceInitializer(new InstanceInitializationData(context, instance!)); + instance => instanceInitializer(new InstanceInitializationData(context, instance!)); internal static IInstanceInitializer Create( Action instanceInitializer, diff --git a/src/SimpleInjector/Container.Registration.Batch.cs b/src/SimpleInjector/Container.Registration.Batch.cs index 220ffc84e..f85d83661 100644 --- a/src/SimpleInjector/Container.Registration.Batch.cs +++ b/src/SimpleInjector/Container.Registration.Batch.cs @@ -687,16 +687,10 @@ private static void CollectionDoesNotContainOpenGenericTypes( } } - private sealed class BatchMapping + private sealed class BatchMapping(Type implementationType, IEnumerable closedServiceTypes) { - private BatchMapping(Type implementationType, IEnumerable closedServiceTypes) - { - this.ImplementationType = implementationType; - this.ClosedServiceTypes = closedServiceTypes; - } - - internal Type ImplementationType { get; } - internal IEnumerable ClosedServiceTypes { get; } + public readonly Type ImplementationType = implementationType; + public readonly IEnumerable ClosedServiceTypes = closedServiceTypes; public static BatchMapping[] Build(Type openServiceType, IEnumerable implementationTypes) { @@ -710,12 +704,9 @@ select Build(openServiceType, implemenationType)) return mappings; } - public static BatchMapping Build(Type openServiceType, Type implementationType) - { - return new BatchMapping( - implementationType: implementationType, - closedServiceTypes: implementationType.GetBaseTypesAndInterfacesFor(openServiceType)); - } + public static BatchMapping Build(Type openServiceType, Type implementationType) => new( + implementationType, + implementationType.GetBaseTypesAndInterfacesFor(openServiceType)); private static void RequiresNoDuplicateRegistrations(BatchMapping[] mappings) { @@ -745,17 +736,11 @@ where serviceTypeGroup.Count() > 1 } } - private class NonGenericTypesToRegisterForOneToOneMappingResults + private sealed class NonGenericTypesToRegisterForOneToOneMappingResults( + List skippedDecorators, List implementationTypes) { - public NonGenericTypesToRegisterForOneToOneMappingResults( - List skippedDecorators, List implementationTypes) - { - this.SkippedDecorators = skippedDecorators; - this.ImplementationTypes = implementationTypes; - } - - public List SkippedDecorators { get; } - public List ImplementationTypes { get; } + public readonly List SkippedDecorators = skippedDecorators; + public readonly List ImplementationTypes = implementationTypes; } } } \ No newline at end of file diff --git a/src/SimpleInjector/Container.Registration.cs b/src/SimpleInjector/Container.Registration.cs index 41b795efe..2e88093fe 100644 --- a/src/SimpleInjector/Container.Registration.cs +++ b/src/SimpleInjector/Container.Registration.cs @@ -1257,12 +1257,8 @@ private void ThrowArgumentExceptionWhenTypeIsNotConstructable( } } - private sealed class ContainerVerificationScope : Scope + private sealed class ContainerVerificationScope(Container container) : Scope(container) { - public ContainerVerificationScope(Container container) : base(container) - { - } - public override void WhenScopeEnds(Action action) { // No-op. diff --git a/src/SimpleInjector/ContainerOptions.cs b/src/SimpleInjector/ContainerOptions.cs index ee3d2659f..98c4578d0 100644 --- a/src/SimpleInjector/ContainerOptions.cs +++ b/src/SimpleInjector/ContainerOptions.cs @@ -526,22 +526,22 @@ public override string ToString() descriptions.Add("Allows Overriding Registrations"); } - if (!(this.ConstructorResolutionBehavior is DefaultConstructorResolutionBehavior)) + if (this.ConstructorResolutionBehavior is not DefaultConstructorResolutionBehavior) { descriptions.Add("Custom Constructor Resolution"); } - if (!(this.DependencyInjectionBehavior is DefaultDependencyInjectionBehavior)) + if (this.DependencyInjectionBehavior is not DefaultDependencyInjectionBehavior) { descriptions.Add("Custom Dependency Injection"); } - if (!(this.PropertySelectionBehavior is DefaultPropertySelectionBehavior)) + if (this.PropertySelectionBehavior is not DefaultPropertySelectionBehavior) { descriptions.Add("Custom Property Selection"); } - if (!(this.LifestyleSelectionBehavior is DefaultLifestyleSelectionBehavior)) + if (this.LifestyleSelectionBehavior is not DefaultLifestyleSelectionBehavior) { descriptions.Add("Custom Lifestyle Selection"); } diff --git a/src/SimpleInjector/IsExternalInit.cs b/src/SimpleInjector/IsExternalInit.cs new file mode 100644 index 000000000..7c889f0e5 --- /dev/null +++ b/src/SimpleInjector/IsExternalInit.cs @@ -0,0 +1,8 @@ +// Copyright (c) Simple Injector Contributors. All rights reserved. +// Licensed under the MIT License. See LICENSE file in the project root for license information. + +namespace System.Runtime.CompilerServices +{ + // Allows defining record types. + internal class IsExternalInit { } +} \ No newline at end of file