diff --git a/README.md b/README.md index cc6969455..9404369b2 100644 --- a/README.md +++ b/README.md @@ -905,17 +905,17 @@ Thank you for your interest in contributing to the _Pure.DI_ project! First of a This project uses the "build as code" approach using [csharp-interactive](https://github.com/DevTeam/csharp-interactive). The entire build logic is a regular [console .NET application](/build). You can use the [build.cmd](/build.cmd) and [build.sh](/build.sh) files with the appropriate command in the parameters to perform all basic actions on the project, e.g: -| Command | Description | -|----------------|-------------------------------| -| g, generator | Builds and tests generator | -| l, libs | Builds and tests libraries | -| c, check | Compatibility checks | -| p, pack | Creates NuGet packages | -| r, readme | Generates README.md | -| benchmarks, bm | Runs benchmarks | -| deploy, dp | Deploys packages | -| t, template | Creates and deploys templates | -| u, update | Updates internal DI version | +| Command | Description | +|----------------|-------------------------------------------------------------------| +| g, generator | Builds and tests generator | +| l, libs | Builds and tests libraries | +| c, check | Compatibility checks | +| p, pack | Creates NuGet packages | +| r, readme | Generates README.md | +| benchmarks, bm | Runs benchmarks | +| deploy, dp | Deploys packages | +| t, template | Creates and deploys templates | +| u, upgrade | Upgrading the internal version of DI to the latest public version | For example: diff --git a/readme/BlazorServerApp.md b/readme/BlazorServerApp.md index dcc0b311e..58c821fc2 100644 --- a/readme/BlazorServerApp.md +++ b/readme/BlazorServerApp.md @@ -72,7 +72,7 @@ The [project file](/samples/BlazorServerApp/BlazorServerApp.csproj) looks like t all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/BlazorWebAssemblyApp.md b/readme/BlazorWebAssemblyApp.md index bba3ac50c..15646f3b9 100644 --- a/readme/BlazorWebAssemblyApp.md +++ b/readme/BlazorWebAssemblyApp.md @@ -71,7 +71,7 @@ The [project file](/samples/BlazorWebAssemblyApp/BlazorWebAssemblyApp.csproj) lo all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/GrpcService.md b/readme/GrpcService.md index 41b731409..11f376ab1 100644 --- a/readme/GrpcService.md +++ b/readme/GrpcService.md @@ -57,7 +57,7 @@ The [project file](/samples/GrpcService/GrpcService.csproj) looks like this: all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/Maui.md b/readme/Maui.md index 0501565f2..3bc10d3ce 100644 --- a/readme/Maui.md +++ b/readme/Maui.md @@ -212,7 +212,7 @@ The [project file](/samples/MAUIApp/MAUIApp.csproj) looks like this: all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/MinimalWebAPI.md b/readme/MinimalWebAPI.md index 8c5c11cb4..ed28d8b09 100644 --- a/readme/MinimalWebAPI.md +++ b/readme/MinimalWebAPI.md @@ -80,7 +80,7 @@ The [project file](/samples/WebAPI/WebAPI.csproj) looks like this: all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/WebAPI.md b/readme/WebAPI.md index ba945f1ee..2707521cb 100644 --- a/readme/WebAPI.md +++ b/readme/WebAPI.md @@ -55,7 +55,7 @@ The [project file](/samples/WebAPI/WebAPI.csproj) looks like this: all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/WebApp.md b/readme/WebApp.md index 853a0adbf..5c335d5be 100644 --- a/readme/WebApp.md +++ b/readme/WebApp.md @@ -55,7 +55,7 @@ The [project file](/samples/WebApp/WebApp.csproj) looks like this: all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/readme/async-disposable-scope.md b/readme/async-disposable-scope.md index d6c1a7c58..d15c73d65 100644 --- a/readme/async-disposable-scope.md +++ b/readme/async-disposable-scope.md @@ -135,14 +135,24 @@ partial class Composition: IDisposable, IAsyncDisposable get { var perResolveFunc43 = default(Func); - perResolveFunc43 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc43 == null) { - Composition transientComposition2 = this; - var localValue0 = new Session(transientComposition2); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc43 == null) + { + perResolveFunc43 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + Composition transientComposition2 = this; + var localValue0 = new Session(transientComposition2); + return localValue0; + }); + } + } + } + return new Program(perResolveFunc43!); } } diff --git a/readme/auto-scoped.md b/readme/auto-scoped.md index 970567fa5..3dc583a05 100644 --- a/readme/auto-scoped.md +++ b/readme/auto-scoped.md @@ -112,22 +112,32 @@ partial class Composition get { var perResolveFunc43 = default(Func); - perResolveFunc43 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc43 == null) { - Composition transientComposition2 = this; - IService transientIService1; + lock (_lock) { - var localBaseComposition1 = transientComposition2; - // Creates a session - var localSession2 = new Composition(localBaseComposition1); - transientIService1 = localSession2.SessionRoot; + if (perResolveFunc43 == null) + { + perResolveFunc43 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + Composition transientComposition2 = this; + IService transientIService1; + { + var localBaseComposition1 = transientComposition2; + // Creates a session + var localSession2 = new Composition(localBaseComposition1); + transientIService1 = localSession2.SessionRoot; + } + + var localValue0 = transientIService1; + return localValue0; + }); + } } + } - var localValue0 = transientIService1; - return localValue0; - }); return new Program(perResolveFunc43!); } } diff --git a/readme/func-with-tag.md b/readme/func-with-tag.md index d5f2462d6..d60569205 100644 --- a/readme/func-with-tag.md +++ b/readme/func-with-tag.md @@ -62,13 +62,23 @@ partial class Composition get { var perResolveFunc39 = default(Func); - perResolveFunc39 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc39 == null) { - var localValue0 = new Dependency(); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc39 == null) + { + perResolveFunc39 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var localValue0 = new Dependency(); + return localValue0; + }); + } + } + } + return new Service(perResolveFunc39!); } } diff --git a/readme/func.md b/readme/func.md index 38ee9d29e..e67bff9ea 100644 --- a/readme/func.md +++ b/readme/func.md @@ -65,13 +65,23 @@ partial class Composition get { var perResolveFunc39 = default(Func); - perResolveFunc39 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc39 == null) { - var localValue0 = new Dependency(); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc39 == null) + { + perResolveFunc39 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var localValue0 = new Dependency(); + return localValue0; + }); + } + } + } + return new Service(perResolveFunc39!); } } diff --git a/readme/lazy.md b/readme/lazy.md index 7dfc4050a..17a9ab6e0 100644 --- a/readme/lazy.md +++ b/readme/lazy.md @@ -56,13 +56,23 @@ partial class Composition get { var perResolveFunc40 = default(Func); - perResolveFunc40 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc40 == null) { - var localValue0 = new Dependency(); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc40 == null) + { + perResolveFunc40 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var localValue0 = new Dependency(); + return localValue0; + }); + } + } + } + Lazy transientLazy1; { var localFactory1 = perResolveFunc40!; diff --git a/readme/manually-started-tasks.md b/readme/manually-started-tasks.md index 42091eecf..50a77c6ef 100644 --- a/readme/manually-started-tasks.md +++ b/readme/manually-started-tasks.md @@ -91,13 +91,23 @@ partial class Composition public IService GetRoot(CancellationToken cancellationToken) { var perResolveFunc42 = default(Func); - perResolveFunc42 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc42 == null) { - var localValue0 = new Dependency(); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc42 == null) + { + perResolveFunc42 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var localValue0 = new Dependency(); + return localValue0; + }); + } + } + } + Task transientTask1; { var localFactory1 = perResolveFunc42!; diff --git a/readme/scope.md b/readme/scope.md index 636c3ff59..bc7db38b4 100644 --- a/readme/scope.md +++ b/readme/scope.md @@ -133,14 +133,24 @@ partial class Composition: IDisposable get { var perResolveFunc43 = default(Func); - perResolveFunc43 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc43 == null) { - Composition transientComposition2 = this; - var localValue0 = new Session(transientComposition2); - return localValue0; - }); + lock (_lock) + { + if (perResolveFunc43 == null) + { + perResolveFunc43 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + Composition transientComposition2 = this; + var localValue0 = new Session(transientComposition2); + return localValue0; + }); + } + } + } + return new Program(perResolveFunc43!); } } diff --git a/readme/task.md b/readme/task.md index 51fcc8478..6b8400f27 100644 --- a/readme/task.md +++ b/readme/task.md @@ -94,13 +94,23 @@ partial class Composition perBlockTaskFactory2 = new TaskFactory(localCancellationToken0, localTaskCreationOptions1, localTaskContinuationOptions2, localTaskScheduler3); } - perResolveFunc42 = new Func( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc42 == null) { - var localValue4 = new Dependency(); - return localValue4; - }); + lock (_lock) + { + if (perResolveFunc42 == null) + { + perResolveFunc42 = new Func( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var localValue4 = new Dependency(); + return localValue4; + }); + } + } + } + Task transientTask1; { var localFactory5 = perResolveFunc42!; diff --git a/readme/tracking-async-disposable-instances-in-delegates.md b/readme/tracking-async-disposable-instances-in-delegates.md index 7b2761cf2..973adf34d 100644 --- a/readme/tracking-async-disposable-instances-in-delegates.md +++ b/readme/tracking-async-disposable-instances-in-delegates.md @@ -96,32 +96,42 @@ partial class Composition get { var perResolveFunc39 = default(Func>); - perResolveFunc39 = new Func>( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc39 == null) { - var accumulator38 = new Owned(); - Dependency transientDependency3 = new Dependency(); lock (_lock) { - accumulator38.Add(transientDependency3); - } - - Owned perBlockOwned1; - { - var localOwned1 = accumulator38; - var localValue2 = transientDependency3; - perBlockOwned1 = new Owned(localValue2, localOwned1); - } - - lock (_lock) - { - accumulator38.Add(perBlockOwned1); + if (perResolveFunc39 == null) + { + perResolveFunc39 = new Func>( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var accumulator38 = new Owned(); + Dependency transientDependency3 = new Dependency(); + lock (_lock) + { + accumulator38.Add(transientDependency3); + } + + Owned perBlockOwned1; + { + var localOwned1 = accumulator38; + var localValue2 = transientDependency3; + perBlockOwned1 = new Owned(localValue2, localOwned1); + } + + lock (_lock) + { + accumulator38.Add(perBlockOwned1); + } + + var localValue0 = perBlockOwned1; + return localValue0; + }); + } } + } - var localValue0 = perBlockOwned1; - return localValue0; - }); return new Service(perResolveFunc39!); } } diff --git a/readme/tracking-disposable-instances-in-delegates.md b/readme/tracking-disposable-instances-in-delegates.md index 12e1c4209..b46590c68 100644 --- a/readme/tracking-disposable-instances-in-delegates.md +++ b/readme/tracking-disposable-instances-in-delegates.md @@ -89,32 +89,42 @@ partial class Composition get { var perResolveFunc39 = default(Func>); - perResolveFunc39 = new Func>( - [MethodImpl(MethodImplOptions.AggressiveInlining)] - () => + if (perResolveFunc39 == null) { - var accumulator38 = new Owned(); - Dependency transientDependency3 = new Dependency(); lock (_lock) { - accumulator38.Add(transientDependency3); - } - - Owned perBlockOwned1; - { - var localOwned1 = accumulator38; - var localValue2 = transientDependency3; - perBlockOwned1 = new Owned(localValue2, localOwned1); - } - - lock (_lock) - { - accumulator38.Add(perBlockOwned1); + if (perResolveFunc39 == null) + { + perResolveFunc39 = new Func>( + [MethodImpl(MethodImplOptions.AggressiveInlining)] + () => + { + var accumulator38 = new Owned(); + Dependency transientDependency3 = new Dependency(); + lock (_lock) + { + accumulator38.Add(transientDependency3); + } + + Owned perBlockOwned1; + { + var localOwned1 = accumulator38; + var localValue2 = transientDependency3; + perBlockOwned1 = new Owned(localValue2, localOwned1); + } + + lock (_lock) + { + accumulator38.Add(perBlockOwned1); + } + + var localValue0 = perBlockOwned1; + return localValue0; + }); + } } + } - var localValue0 = perBlockOwned1; - return localValue0; - }); return new Service(perResolveFunc39!); } }