diff --git a/README.md b/README.md
index 33d8b2e4f..34ff6f754 100644
--- a/README.md
+++ b/README.md
@@ -937,14 +937,14 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-'Hand Coded' | 181.4 ns | 3.65 ns | 6.09 ns | 1.00 | 0.00 | 0.0365 | - | 632 B | 1.00 |
-
'Pure.DI composition root' | 182.0 ns | 3.57 ns | 7.29 ns | 1.01 | 0.04 | 0.0365 | - | 632 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 186.1 ns | 3.52 ns | 4.58 ns | 1.03 | 0.04 | 0.0365 | - | 632 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 189.8 ns | 3.90 ns | 11.05 ns | 1.08 | 0.07 | 0.0365 | - | 632 B | 1.00 |
-
LightInject | 198.9 ns | 4.06 ns | 8.01 ns | 1.10 | 0.05 | 0.0365 | - | 632 B | 1.00 |
-
DryIoc | 213.3 ns | 4.35 ns | 10.82 ns | 1.20 | 0.07 | 0.0365 | - | 632 B | 1.00 |
-
Unity | 10,172.3 ns | 193.16 ns | 180.68 ns | 55.87 | 1.97 | 0.8392 | - | 14520 B | 22.97 |
-
Autofac | 27,444.9 ns | 318.63 ns | 248.76 ns | 149.08 | 3.87 | 1.6479 | 0.0610 | 28816 B | 45.59 |
+
'Hand Coded' | 168.1 ns | 1.72 ns | 1.44 ns | 1.00 | 0.00 | 0.0336 | - | 632 B | 1.00 |
+
'Pure.DI composition root' | 169.6 ns | 3.08 ns | 2.58 ns | 1.01 | 0.02 | 0.0336 | - | 632 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 170.7 ns | 3.02 ns | 2.52 ns | 1.02 | 0.02 | 0.0336 | - | 632 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 171.2 ns | 2.44 ns | 2.04 ns | 1.02 | 0.02 | 0.0336 | - | 632 B | 1.00 |
+
LightInject | 179.8 ns | 3.43 ns | 3.21 ns | 1.07 | 0.02 | 0.0336 | - | 632 B | 1.00 |
+
DryIoc | 200.5 ns | 3.89 ns | 4.16 ns | 1.20 | 0.02 | 0.0336 | - | 632 B | 1.00 |
+
Unity | 9,966.0 ns | 80.16 ns | 62.58 ns | 59.26 | 0.42 | 0.7629 | - | 14520 B | 22.97 |
+
Autofac | 27,170.5 ns | 308.31 ns | 257.45 ns | 161.60 | 1.87 | 1.5259 | 0.0610 | 28816 B | 45.59 |
[Array details](readme/ArrayDetails.md)
@@ -957,15 +957,15 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-'Pure.DI Resolve<T>()' | 136.3 ns | 2.77 ns | 4.48 ns | 0.88 | 0.03 | 0.0198 | - | 344 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 137.9 ns | 2.84 ns | 4.66 ns | 0.88 | 0.03 | 0.0198 | - | 344 B | 1.00 |
-
'Pure.DI composition root' | 141.5 ns | 2.69 ns | 5.50 ns | 0.92 | 0.05 | 0.0198 | - | 344 B | 1.00 |
-
'Hand Coded' | 157.7 ns | 3.24 ns | 3.32 ns | 1.00 | 0.00 | 0.0198 | - | 344 B | 1.00 |
-
'Microsoft DI' | 189.1 ns | 3.11 ns | 2.60 ns | 1.20 | 0.02 | 0.0272 | - | 472 B | 1.37 |
-
LightInject | 290.2 ns | 5.79 ns | 5.42 ns | 1.84 | 0.05 | 0.0496 | - | 856 B | 2.49 |
-
DryIoc | 308.8 ns | 6.25 ns | 14.12 ns | 1.92 | 0.08 | 0.0496 | - | 856 B | 2.49 |
-
Unity | 7,874.1 ns | 137.31 ns | 128.44 ns | 50.05 | 1.18 | 0.7935 | - | 13752 B | 39.98 |
-
Autofac | 26,601.4 ns | 213.84 ns | 189.56 ns | 168.63 | 4.20 | 1.6479 | 0.0610 | 28944 B | 84.14 |
+
'Pure.DI composition root' | 128.2 ns | 1.50 ns | 1.25 ns | 0.91 | 0.01 | 0.0184 | - | 344 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 130.5 ns | 2.22 ns | 1.85 ns | 0.93 | 0.02 | 0.0184 | - | 344 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 133.8 ns | 2.38 ns | 1.99 ns | 0.95 | 0.01 | 0.0184 | - | 344 B | 1.00 |
+
'Hand Coded' | 140.3 ns | 1.69 ns | 1.41 ns | 1.00 | 0.00 | 0.0184 | - | 344 B | 1.00 |
+
'Microsoft DI' | 181.3 ns | 2.01 ns | 1.67 ns | 1.29 | 0.02 | 0.0250 | - | 472 B | 1.37 |
+
LightInject | 277.7 ns | 3.47 ns | 2.89 ns | 1.98 | 0.03 | 0.0458 | - | 856 B | 2.49 |
+
DryIoc | 281.7 ns | 5.33 ns | 4.45 ns | 2.01 | 0.03 | 0.0458 | - | 856 B | 2.49 |
+
Unity | 7,768.1 ns | 124.10 ns | 152.41 ns | 55.43 | 1.24 | 0.7324 | - | 13752 B | 39.98 |
+
Autofac | 26,954.8 ns | 529.73 ns | 543.99 ns | 192.63 | 4.87 | 1.5259 | 0.0610 | 28944 B | 84.14 |
[Enum details](readme/EnumDetails.md)
@@ -978,14 +978,14 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio |
-'Hand Coded' | 9.394 ns | 0.2654 ns | 0.3056 ns | 1.00 | 0.00 | 0.0014 | 24 B | 1.00 |
-
'Pure.DI composition root' | 9.462 ns | 0.2354 ns | 0.2087 ns | 1.00 | 0.04 | 0.0014 | 24 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 12.645 ns | 0.2946 ns | 0.2756 ns | 1.34 | 0.05 | 0.0014 | 24 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 13.081 ns | 0.1891 ns | 0.1676 ns | 1.38 | 0.04 | 0.0014 | 24 B | 1.00 |
-
DryIoc | 70.358 ns | 1.4444 ns | 1.2804 ns | 7.41 | 0.27 | 0.0069 | 120 B | 5.00 |
-
LightInject | 328.676 ns | 5.6607 ns | 4.7269 ns | 34.52 | 0.99 | 0.0291 | 504 B | 21.00 |
-
Unity | 4,550.994 ns | 30.3968 ns | 26.9460 ns | 479.38 | 13.31 | 0.1450 | 2552 B | 106.33 |
-
Autofac | 11,121.527 ns | 148.2118 ns | 138.6374 ns | 1,174.57 | 28.55 | 0.8087 | 14008 B | 583.67 |
+
'Pure.DI composition root' | 8.002 ns | 0.1496 ns | 0.1326 ns | 0.85 | 0.01 | 0.0013 | 24 B | 1.00 |
+
'Hand Coded' | 9.445 ns | 0.1727 ns | 0.1615 ns | 1.00 | 0.00 | 0.0013 | 24 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 10.327 ns | 0.2801 ns | 0.2620 ns | 1.09 | 0.02 | 0.0013 | 24 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 11.954 ns | 0.2458 ns | 0.2053 ns | 1.26 | 0.03 | 0.0013 | 24 B | 1.00 |
+
DryIoc | 62.785 ns | 1.1086 ns | 0.9828 ns | 6.65 | 0.19 | 0.0063 | 120 B | 5.00 |
+
LightInject | 296.638 ns | 3.9363 ns | 3.2870 ns | 31.37 | 0.80 | 0.0267 | 504 B | 21.00 |
+
Unity | 4,448.473 ns | 35.3598 ns | 33.0756 ns | 471.11 | 9.33 | 0.1297 | 2552 B | 106.33 |
+
Autofac | 10,857.806 ns | 115.9508 ns | 96.8241 ns | 1,147.95 | 22.40 | 0.7477 | 14008 B | 583.67 |
[Func details](readme/FuncDetails.md)
@@ -998,18 +998,18 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-'Hand Coded' | 8.469 ns | 0.2493 ns | 0.4165 ns | 1.00 | 0.00 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI composition root' | 9.506 ns | 0.2733 ns | 0.3648 ns | 1.11 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 12.508 ns | 0.2986 ns | 0.2793 ns | 1.43 | 0.08 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 12.572 ns | 0.2674 ns | 0.2501 ns | 1.43 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
DryIoc | 28.755 ns | 0.2372 ns | 0.2219 ns | 3.28 | 0.15 | 0.0014 | - | 24 B | 1.00 |
-
'Simple Injector' | 35.304 ns | 0.2639 ns | 0.2060 ns | 3.99 | 0.19 | 0.0014 | - | 24 B | 1.00 |
-
'Microsoft DI' | 39.436 ns | 0.4113 ns | 0.3435 ns | 4.48 | 0.24 | 0.0014 | - | 24 B | 1.00 |
-
LightInject | 910.508 ns | 5.9297 ns | 5.2565 ns | 103.56 | 4.97 | 0.0010 | - | 24 B | 1.00 |
-
Unity | 7,927.580 ns | 29.0347 ns | 24.2453 ns | 900.81 | 44.06 | 0.1831 | - | 3184 B | 132.67 |
-
Autofac | 19,562.149 ns | 236.3915 ns | 209.5549 ns | 2,224.36 | 94.37 | 1.3733 | 0.0305 | 24208 B | 1,008.67 |
-
'Castle Windsor' | 31,009.123 ns | 327.3126 ns | 306.1684 ns | 3,531.38 | 141.29 | 1.3428 | - | 23912 B | 996.33 |
-
Ninject | 120,850.129 ns | 2,359.7906 ns | 3,532.0234 ns | 14,228.15 | 605.72 | 4.2725 | 1.0986 | 74096 B | 3,087.33 |
+
'Hand Coded' | 7.600 ns | 0.1685 ns | 0.1316 ns | 1.00 | 0.00 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI composition root' | 8.652 ns | 0.2436 ns | 0.2392 ns | 1.14 | 0.03 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 9.919 ns | 0.2579 ns | 0.2154 ns | 1.30 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 11.393 ns | 0.2199 ns | 0.1836 ns | 1.50 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
DryIoc | 27.581 ns | 0.3758 ns | 0.3138 ns | 3.63 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
'Simple Injector' | 33.807 ns | 0.3441 ns | 0.3050 ns | 4.45 | 0.10 | 0.0013 | - | 24 B | 1.00 |
+
'Microsoft DI' | 38.478 ns | 0.3053 ns | 0.2549 ns | 5.06 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
LightInject | 865.775 ns | 1.2567 ns | 1.0494 ns | 113.96 | 1.96 | 0.0010 | - | 24 B | 1.00 |
+
Unity | 7,677.459 ns | 99.8336 ns | 88.4999 ns | 1,011.67 | 17.40 | 0.1678 | - | 3184 B | 132.67 |
+
Autofac | 18,825.341 ns | 315.1815 ns | 263.1908 ns | 2,478.00 | 62.67 | 1.2817 | 0.0305 | 24208 B | 1,008.67 |
+
'Castle Windsor' | 31,318.225 ns | 408.7010 ns | 362.3028 ns | 4,123.56 | 74.24 | 1.2207 | - | 23912 B | 996.33 |
+
Ninject | 116,099.082 ns | 2,240.6371 ns | 2,991.1861 ns | 15,609.54 | 360.85 | 3.9063 | 0.9766 | 74096 B | 3,087.33 |
[Singleton details](readme/SingletonDetails.md)
@@ -1022,18 +1022,18 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-'Hand Coded' | 8.300 ns | 0.2275 ns | 0.2017 ns | 1.00 | 0.00 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI composition root' | 8.417 ns | 0.2472 ns | 0.2313 ns | 1.02 | 0.04 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 10.007 ns | 0.2170 ns | 0.1924 ns | 1.21 | 0.03 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 10.739 ns | 0.2942 ns | 0.4915 ns | 1.29 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
LightInject | 18.968 ns | 0.4292 ns | 0.3805 ns | 2.29 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
'Microsoft DI' | 24.761 ns | 0.2356 ns | 0.2089 ns | 2.98 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
DryIoc | 26.034 ns | 0.3170 ns | 0.2810 ns | 3.14 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
'Simple Injector' | 33.862 ns | 0.4485 ns | 0.3976 ns | 4.08 | 0.11 | 0.0014 | - | 24 B | 1.00 |
-
Unity | 11,055.904 ns | 85.9931 ns | 76.2306 ns | 1,332.65 | 31.50 | 0.2899 | - | 5176 B | 215.67 |
-
Autofac | 28,686.734 ns | 523.7684 ns | 464.3070 ns | 3,458.02 | 103.75 | 1.9226 | 0.0916 | 33224 B | 1,384.33 |
-
'Castle Windsor' | 57,113.574 ns | 417.0749 ns | 369.7260 ns | 6,883.84 | 138.26 | 3.1128 | - | 54360 B | 2,265.00 |
-
Ninject | 259,310.814 ns | 5,082.3164 ns | 5,438.0217 ns | 31,238.77 | 1,101.53 | 7.3242 | 1.9531 | 131008 B | 5,458.67 |
+
'Pure.DI composition root' | 7.903 ns | 0.1254 ns | 0.0979 ns | 0.97 | 0.02 | 0.0013 | - | 24 B | 1.00 |
+
'Hand Coded' | 8.135 ns | 0.1484 ns | 0.1158 ns | 1.00 | 0.00 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 10.337 ns | 0.2882 ns | 0.3848 ns | 1.28 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 11.442 ns | 0.2251 ns | 0.1995 ns | 1.41 | 0.03 | 0.0013 | - | 24 B | 1.00 |
+
LightInject | 20.096 ns | 0.0607 ns | 0.0507 ns | 2.47 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Microsoft DI' | 25.671 ns | 0.1087 ns | 0.0849 ns | 3.16 | 0.05 | 0.0013 | - | 24 B | 1.00 |
+
DryIoc | 27.474 ns | 0.5736 ns | 0.4478 ns | 3.38 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
'Simple Injector' | 34.814 ns | 0.2384 ns | 0.2114 ns | 4.28 | 0.05 | 0.0013 | - | 24 B | 1.00 |
+
Unity | 11,090.606 ns | 65.9897 ns | 61.7268 ns | 1,366.08 | 19.49 | 0.2747 | - | 5176 B | 215.67 |
+
Autofac | 28,646.903 ns | 355.7947 ns | 315.4027 ns | 3,520.24 | 61.91 | 1.7700 | 0.0916 | 33224 B | 1,384.33 |
+
'Castle Windsor' | 58,534.573 ns | 988.3103 ns | 876.1114 ns | 7,196.49 | 162.41 | 2.8687 | - | 54360 B | 2,265.00 |
+
Ninject | 253,820.129 ns | 4,777.4163 ns | 5,310.0855 ns | 31,080.38 | 673.81 | 6.8359 | 1.4648 | 131008 B | 5,458.67 |
[Transient details](readme/TransientDetails.md)
@@ -1045,7 +1045,7 @@ Installed [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
-Intel Xeon Platinum 8175M CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
+Intel Xeon Platinum 8259CL CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
.NET SDK 8.0.201
[Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
diff --git a/benchmarks/data/Enum.html b/benchmarks/data/Enum.html
deleted file mode 100644
index 19539d11c..000000000
--- a/benchmarks/data/Enum.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-Pure.DI.Benchmarks.Benchmarks.Enum-20240413-090302
-
-
-
-
-
-BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
-Intel Xeon Platinum 8175M CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
-.NET SDK 8.0.201
- [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
- DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
-
-
-
-
-Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-
-'Simple Injector' | NA | NA | NA | ? | ? | NA | NA | NA | ? |
-
'Castle Windsor' | NA | NA | NA | ? | ? | NA | NA | NA | ? |
-
Ninject | NA | NA | NA | ? | ? | NA | NA | NA | ? |
-
'Pure.DI Resolve<T>()' | 136.3 ns | 2.77 ns | 4.48 ns | 0.88 | 0.03 | 0.0198 | - | 344 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 137.9 ns | 2.84 ns | 4.66 ns | 0.88 | 0.03 | 0.0198 | - | 344 B | 1.00 |
-
'Pure.DI composition root' | 141.5 ns | 2.69 ns | 5.50 ns | 0.92 | 0.05 | 0.0198 | - | 344 B | 1.00 |
-
'Hand Coded' | 157.7 ns | 3.24 ns | 3.32 ns | 1.00 | 0.00 | 0.0198 | - | 344 B | 1.00 |
-
'Microsoft DI' | 189.1 ns | 3.11 ns | 2.60 ns | 1.20 | 0.02 | 0.0272 | - | 472 B | 1.37 |
-
LightInject | 290.2 ns | 5.79 ns | 5.42 ns | 1.84 | 0.05 | 0.0496 | - | 856 B | 2.49 |
-
DryIoc | 308.8 ns | 6.25 ns | 14.12 ns | 1.92 | 0.08 | 0.0496 | - | 856 B | 2.49 |
-
Unity | 7,874.1 ns | 137.31 ns | 128.44 ns | 50.05 | 1.18 | 0.7935 | - | 13752 B | 39.98 |
-
Autofac | 26,601.4 ns | 213.84 ns | 189.56 ns | 168.63 | 4.20 | 1.6479 | 0.0610 | 28944 B | 84.14 |
-
-
-
diff --git a/benchmarks/data/Array.html b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Array-report.html
similarity index 54%
rename from benchmarks/data/Array.html
rename to benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Array-report.html
index 09904c49a..4c103345d 100644
--- a/benchmarks/data/Array.html
+++ b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Array-report.html
@@ -2,7 +2,7 @@
-Pure.DI.Benchmarks.Benchmarks.Array-20240413-085624
+Pure.DI.Benchmarks.Benchmarks.Array-20240420-074640
+
+
+
+BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
+Intel Xeon Platinum 8259CL CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
+.NET SDK 8.0.201
+ [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+ DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+
+
+
+
+Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
+
+'Simple Injector' | NA | NA | NA | ? | ? | NA | NA | NA | ? |
+
'Castle Windsor' | NA | NA | NA | ? | ? | NA | NA | NA | ? |
+
Ninject | NA | NA | NA | ? | ? | NA | NA | NA | ? |
+
'Pure.DI composition root' | 128.2 ns | 1.50 ns | 1.25 ns | 0.91 | 0.01 | 0.0184 | - | 344 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 130.5 ns | 2.22 ns | 1.85 ns | 0.93 | 0.02 | 0.0184 | - | 344 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 133.8 ns | 2.38 ns | 1.99 ns | 0.95 | 0.01 | 0.0184 | - | 344 B | 1.00 |
+
'Hand Coded' | 140.3 ns | 1.69 ns | 1.41 ns | 1.00 | 0.00 | 0.0184 | - | 344 B | 1.00 |
+
'Microsoft DI' | 181.3 ns | 2.01 ns | 1.67 ns | 1.29 | 0.02 | 0.0250 | - | 472 B | 1.37 |
+
LightInject | 277.7 ns | 3.47 ns | 2.89 ns | 1.98 | 0.03 | 0.0458 | - | 856 B | 2.49 |
+
DryIoc | 281.7 ns | 5.33 ns | 4.45 ns | 2.01 | 0.03 | 0.0458 | - | 856 B | 2.49 |
+
Unity | 7,768.1 ns | 124.10 ns | 152.41 ns | 55.43 | 1.24 | 0.7324 | - | 13752 B | 39.98 |
+
Autofac | 26,954.8 ns | 529.73 ns | 543.99 ns | 192.63 | 4.87 | 1.5259 | 0.0610 | 28944 B | 84.14 |
+
+
+
diff --git a/benchmarks/data/Func.html b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Func-report.html
similarity index 51%
rename from benchmarks/data/Func.html
rename to benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Func-report.html
index 5f40c31fd..929357825 100644
--- a/benchmarks/data/Func.html
+++ b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Func-report.html
@@ -2,7 +2,7 @@
-Pure.DI.Benchmarks.Benchmarks.Func-20240413-090718
+Pure.DI.Benchmarks.Benchmarks.Func-20240420-075230
+
+
+
+BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
+Intel Xeon Platinum 8259CL CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
+.NET SDK 8.0.201
+ [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+ DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+
+
+
+
+Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
+
+'Hand Coded' | 7.600 ns | 0.1685 ns | 0.1316 ns | 1.00 | 0.00 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI composition root' | 8.652 ns | 0.2436 ns | 0.2392 ns | 1.14 | 0.03 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 9.919 ns | 0.2579 ns | 0.2154 ns | 1.30 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 11.393 ns | 0.2199 ns | 0.1836 ns | 1.50 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
DryIoc | 27.581 ns | 0.3758 ns | 0.3138 ns | 3.63 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
'Simple Injector' | 33.807 ns | 0.3441 ns | 0.3050 ns | 4.45 | 0.10 | 0.0013 | - | 24 B | 1.00 |
+
'Microsoft DI' | 38.478 ns | 0.3053 ns | 0.2549 ns | 5.06 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
LightInject | 865.775 ns | 1.2567 ns | 1.0494 ns | 113.96 | 1.96 | 0.0010 | - | 24 B | 1.00 |
+
Unity | 7,677.459 ns | 99.8336 ns | 88.4999 ns | 1,011.67 | 17.40 | 0.1678 | - | 3184 B | 132.67 |
+
Autofac | 18,825.341 ns | 315.1815 ns | 263.1908 ns | 2,478.00 | 62.67 | 1.2817 | 0.0305 | 24208 B | 1,008.67 |
+
'Castle Windsor' | 31,318.225 ns | 408.7010 ns | 362.3028 ns | 4,123.56 | 74.24 | 1.2207 | - | 23912 B | 996.33 |
+
Ninject | 116,099.082 ns | 2,240.6371 ns | 2,991.1861 ns | 15,609.54 | 360.85 | 3.9063 | 0.9766 | 74096 B | 3,087.33 |
+
+
+
diff --git a/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Transient-report.html b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Transient-report.html
new file mode 100644
index 000000000..2c0cd9a8e
--- /dev/null
+++ b/benchmarks/data/Pure.DI.Benchmarks.Benchmarks.Transient-report.html
@@ -0,0 +1,41 @@
+
+
+
+
+Pure.DI.Benchmarks.Benchmarks.Transient-20240420-080021
+
+
+
+
+
+BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
+Intel Xeon Platinum 8259CL CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
+.NET SDK 8.0.201
+ [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+ DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
+
+
+
+
+Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
+
+'Pure.DI composition root' | 7.903 ns | 0.1254 ns | 0.0979 ns | 0.97 | 0.02 | 0.0013 | - | 24 B | 1.00 |
+
'Hand Coded' | 8.135 ns | 0.1484 ns | 0.1158 ns | 1.00 | 0.00 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve<T>()' | 10.337 ns | 0.2882 ns | 0.3848 ns | 1.28 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Pure.DI Resolve(Type)' | 11.442 ns | 0.2251 ns | 0.1995 ns | 1.41 | 0.03 | 0.0013 | - | 24 B | 1.00 |
+
LightInject | 20.096 ns | 0.0607 ns | 0.0507 ns | 2.47 | 0.04 | 0.0013 | - | 24 B | 1.00 |
+
'Microsoft DI' | 25.671 ns | 0.1087 ns | 0.0849 ns | 3.16 | 0.05 | 0.0013 | - | 24 B | 1.00 |
+
DryIoc | 27.474 ns | 0.5736 ns | 0.4478 ns | 3.38 | 0.07 | 0.0013 | - | 24 B | 1.00 |
+
'Simple Injector' | 34.814 ns | 0.2384 ns | 0.2114 ns | 4.28 | 0.05 | 0.0013 | - | 24 B | 1.00 |
+
Unity | 11,090.606 ns | 65.9897 ns | 61.7268 ns | 1,366.08 | 19.49 | 0.2747 | - | 5176 B | 215.67 |
+
Autofac | 28,646.903 ns | 355.7947 ns | 315.4027 ns | 3,520.24 | 61.91 | 1.7700 | 0.0916 | 33224 B | 1,384.33 |
+
'Castle Windsor' | 58,534.573 ns | 988.3103 ns | 876.1114 ns | 7,196.49 | 162.41 | 2.8687 | - | 54360 B | 2,265.00 |
+
Ninject | 253,820.129 ns | 4,777.4163 ns | 5,310.0855 ns | 31,080.38 | 673.81 | 6.8359 | 1.4648 | 131008 B | 5,458.67 |
+
+
+
diff --git a/benchmarks/data/Singleton.html b/benchmarks/data/Singleton.html
deleted file mode 100644
index e8ba45f72..000000000
--- a/benchmarks/data/Singleton.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-Pure.DI.Benchmarks.Benchmarks.Singleton-20240413-091023
-
-
-
-
-
-BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
-Intel Xeon Platinum 8175M CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
-.NET SDK 8.0.201
- [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
- DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
-
-
-
-
-Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-
-'Hand Coded' | 8.469 ns | 0.2493 ns | 0.4165 ns | 1.00 | 0.00 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI composition root' | 9.506 ns | 0.2733 ns | 0.3648 ns | 1.11 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 12.508 ns | 0.2986 ns | 0.2793 ns | 1.43 | 0.08 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 12.572 ns | 0.2674 ns | 0.2501 ns | 1.43 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
DryIoc | 28.755 ns | 0.2372 ns | 0.2219 ns | 3.28 | 0.15 | 0.0014 | - | 24 B | 1.00 |
-
'Simple Injector' | 35.304 ns | 0.2639 ns | 0.2060 ns | 3.99 | 0.19 | 0.0014 | - | 24 B | 1.00 |
-
'Microsoft DI' | 39.436 ns | 0.4113 ns | 0.3435 ns | 4.48 | 0.24 | 0.0014 | - | 24 B | 1.00 |
-
LightInject | 910.508 ns | 5.9297 ns | 5.2565 ns | 103.56 | 4.97 | 0.0010 | - | 24 B | 1.00 |
-
Unity | 7,927.580 ns | 29.0347 ns | 24.2453 ns | 900.81 | 44.06 | 0.1831 | - | 3184 B | 132.67 |
-
Autofac | 19,562.149 ns | 236.3915 ns | 209.5549 ns | 2,224.36 | 94.37 | 1.3733 | 0.0305 | 24208 B | 1,008.67 |
-
'Castle Windsor' | 31,009.123 ns | 327.3126 ns | 306.1684 ns | 3,531.38 | 141.29 | 1.3428 | - | 23912 B | 996.33 |
-
Ninject | 120,850.129 ns | 2,359.7906 ns | 3,532.0234 ns | 14,228.15 | 605.72 | 4.2725 | 1.0986 | 74096 B | 3,087.33 |
-
-
-
diff --git a/benchmarks/data/Transient.html b/benchmarks/data/Transient.html
deleted file mode 100644
index 5eb9268c1..000000000
--- a/benchmarks/data/Transient.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-Pure.DI.Benchmarks.Benchmarks.Transient-20240413-091543
-
-
-
-
-
-BenchmarkDotNet v0.13.12, Ubuntu 20.04.6 LTS (Focal Fossa)
-Intel Xeon Platinum 8175M CPU 2.50GHz, 1 CPU, 2 logical cores and 1 physical core
-.NET SDK 8.0.201
- [Host] : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
- DefaultJob : .NET 8.0.2 (8.0.224.6711), X64 RyuJIT AVX-512F+CD+BW+DQ+VL
-
-
-
-
-Method | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
-
-'Hand Coded' | 8.300 ns | 0.2275 ns | 0.2017 ns | 1.00 | 0.00 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI composition root' | 8.417 ns | 0.2472 ns | 0.2313 ns | 1.02 | 0.04 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve<T>()' | 10.007 ns | 0.2170 ns | 0.1924 ns | 1.21 | 0.03 | 0.0014 | - | 24 B | 1.00 |
-
'Pure.DI Resolve(Type)' | 10.739 ns | 0.2942 ns | 0.4915 ns | 1.29 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
LightInject | 18.968 ns | 0.4292 ns | 0.3805 ns | 2.29 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
'Microsoft DI' | 24.761 ns | 0.2356 ns | 0.2089 ns | 2.98 | 0.07 | 0.0014 | - | 24 B | 1.00 |
-
DryIoc | 26.034 ns | 0.3170 ns | 0.2810 ns | 3.14 | 0.06 | 0.0014 | - | 24 B | 1.00 |
-
'Simple Injector' | 33.862 ns | 0.4485 ns | 0.3976 ns | 4.08 | 0.11 | 0.0014 | - | 24 B | 1.00 |
-
Unity | 11,055.904 ns | 85.9931 ns | 76.2306 ns | 1,332.65 | 31.50 | 0.2899 | - | 5176 B | 215.67 |
-
Autofac | 28,686.734 ns | 523.7684 ns | 464.3070 ns | 3,458.02 | 103.75 | 1.9226 | 0.0916 | 33224 B | 1,384.33 |
-
'Castle Windsor' | 57,113.574 ns | 417.0749 ns | 369.7260 ns | 6,883.84 | 138.26 | 3.1128 | - | 54360 B | 2,265.00 |
-
Ninject | 259,310.814 ns | 5,082.3164 ns | 5,438.0217 ns | 31,238.77 | 1,101.53 | 7.3242 | 1.9531 | 131008 B | 5,458.67 |
-
-
-
diff --git a/readme/ArrayDetails.md b/readme/ArrayDetails.md
index 400e14ff0..ac3ac4942 100644
--- a/readme/ArrayDetails.md
+++ b/readme/ArrayDetails.md
@@ -15,7 +15,6 @@ classDiagram
class CompositionRoot {
+CompositionRoot(IService1 service1, IService2 service21, IService2 service22, IService2 service23, IService3 service3, IService4 service41, IService4 service42)
}
- class ArrayᐸIService3ᐳ
Service1 --|> IService1 :
class Service1 {
+Service1(IService2 service2)
@@ -44,6 +43,7 @@ classDiagram
class Service4 {
+Service4()
}
+ class ArrayᐸIService3ᐳ
class IService1 {
<>
}
@@ -63,10 +63,6 @@ classDiagram
CompositionRoot *-- Service3 : IService3
CompositionRoot *-- Service4 : IService4
CompositionRoot *-- Service4 : IService4
- ArrayᐸIService3ᐳ *-- Service3 : IService3
- ArrayᐸIService3ᐳ *-- Service3v2 : 2 IService3
- ArrayᐸIService3ᐳ *-- Service3v3 : 3 IService3
- ArrayᐸIService3ᐳ *-- Service3v4 : 4 IService3
Service1 *-- Service2Array : IService2
Service2Array *-- ArrayᐸIService3ᐳ : ArrayᐸIService3ᐳ
Service3 *-- Service4 : IService4
@@ -78,6 +74,10 @@ classDiagram
Service3v4 *-- Service4 : IService4
Service3v4 *-- Service4 : IService4
Array ..> CompositionRoot : CompositionRoot TestPureDIByCR()
+ ArrayᐸIService3ᐳ *-- Service3 : IService3
+ ArrayᐸIService3ᐳ *-- Service3v2 : 2 IService3
+ ArrayᐸIService3ᐳ *-- Service3v3 : 3 IService3
+ ArrayᐸIService3ᐳ *-- Service3v4 : 4 IService3
```
### Generated code
@@ -88,16 +88,16 @@ classDiagram
```c#
partial class Array
{
- private readonly Array _rootM04D13di;
+ private readonly Array _rootM04D20di;
public Array()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Array(Array baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
@@ -106,31 +106,33 @@ partial class Array
return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2Array(new Pure.DI.Benchmarks.Model.IService3[4] { new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v2(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v4(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()) })), new Pure.DI.Benchmarks.Model.Service2Array(new Pure.DI.Benchmarks.Model.IService3[4] { new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v2(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v4(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()) }), new Pure.DI.Benchmarks.Model.Service2Array(new Pure.DI.Benchmarks.Model.IService3[4] { new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v2(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v4(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()) }), new Pure.DI.Benchmarks.Model.Service2Array(new Pure.DI.Benchmarks.Model.IService3[4] { new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v2(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3v4(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()) }), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -143,18 +145,18 @@ partial class Array
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -178,7 +180,6 @@ partial class Array
" class CompositionRoot {\n" +
" +CompositionRoot(IService1 service1, IService2 service21, IService2 service22, IService2 service23, IService3 service3, IService4 service41, IService4 service42)\n" +
" }\n" +
- " class ArrayᐸIService3ᐳ\n" +
" Service1 --|> IService1 : \n" +
" class Service1 {\n" +
" +Service1(IService2 service2)\n" +
@@ -207,6 +208,7 @@ partial class Array
" class Service4 {\n" +
" +Service4()\n" +
" }\n" +
+ " class ArrayᐸIService3ᐳ\n" +
" class IService1 {\n" +
" <>\n" +
" }\n" +
@@ -226,10 +228,6 @@ partial class Array
" CompositionRoot *-- Service3 : IService3\n" +
" CompositionRoot *-- Service4 : IService4\n" +
" CompositionRoot *-- Service4 : IService4\n" +
- " ArrayᐸIService3ᐳ *-- Service3 : IService3\n" +
- " ArrayᐸIService3ᐳ *-- Service3v2 : 2 IService3\n" +
- " ArrayᐸIService3ᐳ *-- Service3v3 : 3 IService3\n" +
- " ArrayᐸIService3ᐳ *-- Service3v4 : 4 IService3\n" +
" Service1 *-- Service2Array : IService2\n" +
" Service2Array *-- ArrayᐸIService3ᐳ : ArrayᐸIService3ᐳ\n" +
" Service3 *-- Service4 : IService4\n" +
@@ -240,28 +238,32 @@ partial class Array
" Service3v3 *-- Service4 : IService4\n" +
" Service3v4 *-- Service4 : IService4\n" +
" Service3v4 *-- Service4 : IService4\n" +
- " Array ..> CompositionRoot : CompositionRoot TestPureDIByCR()";
+ " Array ..> CompositionRoot : CompositionRoot TestPureDIByCR()\n" +
+ " ArrayᐸIService3ᐳ *-- Service3 : IService3\n" +
+ " ArrayᐸIService3ᐳ *-- Service3v2 : 2 IService3\n" +
+ " ArrayᐸIService3ᐳ *-- Service3v3 : 3 IService3\n" +
+ " ArrayᐸIService3ᐳ *-- Service3v4 : 4 IService3";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Array()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Array composite)
{
@@ -274,7 +276,7 @@ partial class Array
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.Benchmarks.Model.CompositionRoot Resolve(Array composition)
{
diff --git a/readme/Avalonia.md b/readme/Avalonia.md
index 9a53c081f..1c3f363c4 100644
--- a/readme/Avalonia.md
+++ b/readme/Avalonia.md
@@ -107,7 +107,7 @@ The [project file](/samples/AvaloniaApp/AvaloniaApp.csproj) looks like this:
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/BlazorServerApp.md b/readme/BlazorServerApp.md
index b3b7863a1..5d8e6f5ff 100644
--- a/readme/BlazorServerApp.md
+++ b/readme/BlazorServerApp.md
@@ -68,7 +68,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 decf7524d..c66cf3e78 100644
--- a/readme/BlazorWebAssemblyApp.md
+++ b/readme/BlazorWebAssemblyApp.md
@@ -67,7 +67,7 @@ The [project file](/samples/BlazorWebAssemblyApp/BlazorWebAssemblyApp.csproj) lo
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/Console.md b/readme/Console.md
index f8b1d69c5..df16b3b76 100644
--- a/readme/Console.md
+++ b/readme/Console.md
@@ -90,7 +90,7 @@ The [project file](/samples/ShroedingersCat/ShroedingersCat.csproj) looks like t
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/ConsoleNativeAOT.md b/readme/ConsoleNativeAOT.md
index 69bd06d1c..d3e834789 100644
--- a/readme/ConsoleNativeAOT.md
+++ b/readme/ConsoleNativeAOT.md
@@ -16,7 +16,7 @@ The [project file](/samples/ShroedingersCatNativeAOT/ShroedingersCatNativeAOT.cs
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/ConsoleTopLevelStatements.md b/readme/ConsoleTopLevelStatements.md
index 26091711e..fc7f58481 100644
--- a/readme/ConsoleTopLevelStatements.md
+++ b/readme/ConsoleTopLevelStatements.md
@@ -78,7 +78,7 @@ The [project file](/samples/ShroedingersCatTopLevelStatements/ShroedingersCatTop
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/EnumDetails.md b/readme/EnumDetails.md
index d71a46c58..32a1d9db1 100644
--- a/readme/EnumDetails.md
+++ b/readme/EnumDetails.md
@@ -15,7 +15,6 @@ classDiagram
class CompositionRoot {
+CompositionRoot(IService1 service1, IService2 service21, IService2 service22, IService2 service23, IService3 service3, IService4 service41, IService4 service42)
}
- class IEnumerableᐸIService3ᐳ
Service1 --|> IService1 :
class Service1 {
+Service1(IService2 service2)
@@ -44,6 +43,7 @@ classDiagram
class Service4 {
+Service4()
}
+ class IEnumerableᐸIService3ᐳ
class IService1 {
<>
}
@@ -63,10 +63,6 @@ classDiagram
CompositionRoot *-- Service3 : IService3
CompositionRoot *-- Service4 : IService4
CompositionRoot *-- Service4 : IService4
- IEnumerableᐸIService3ᐳ *-- Service3 : IService3
- IEnumerableᐸIService3ᐳ *-- Service3v2 : 2 IService3
- IEnumerableᐸIService3ᐳ *-- Service3v3 : 3 IService3
- IEnumerableᐸIService3ᐳ *-- Service3v4 : 4 IService3
Service1 *-- Service2Enum : IService2
Service2Enum o-- "PerBlock" IEnumerableᐸIService3ᐳ : IEnumerableᐸIService3ᐳ
Service3 *-- Service4 : IService4
@@ -78,6 +74,10 @@ classDiagram
Service3v4 *-- Service4 : IService4
Service3v4 *-- Service4 : IService4
Enum ..> CompositionRoot : CompositionRoot TestPureDIByCR()
+ IEnumerableᐸIService3ᐳ *-- Service3 : IService3
+ IEnumerableᐸIService3ᐳ *-- Service3v2 : 2 IService3
+ IEnumerableᐸIService3ᐳ *-- Service3v3 : 3 IService3
+ IEnumerableᐸIService3ᐳ *-- Service3v4 : 4 IService3
```
### Generated code
@@ -88,58 +88,60 @@ classDiagram
```c#
partial class Enum
{
- private readonly Enum _rootM04D13di;
+ private readonly Enum _rootM04D20di;
public Enum()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Enum(Enum baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public partial Pure.DI.Benchmarks.Model.CompositionRoot TestPureDIByCR()
{
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x200)]
- System.Collections.Generic.IEnumerable LocalperBlockM04D13di10_IEnumerable()
+ System.Collections.Generic.IEnumerable LocalperBlockM04D20di10_IEnumerable()
{
yield return new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
yield return new Pure.DI.Benchmarks.Model.Service3v2(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
yield return new Pure.DI.Benchmarks.Model.Service3v3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
yield return new Pure.DI.Benchmarks.Model.Service3v4(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
}
- System.Collections.Generic.IEnumerable perBlockM04D13di10_IEnumerable = LocalperBlockM04D13di10_IEnumerable();
- return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D13di10_IEnumerable)), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D13di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D13di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D13di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
+ System.Collections.Generic.IEnumerable perBlockM04D20di10_IEnumerable = LocalperBlockM04D20di10_IEnumerable();
+ return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D20di10_IEnumerable)), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D20di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D20di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service2Enum(perBlockM04D20di10_IEnumerable), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -152,18 +154,18 @@ partial class Enum
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -187,7 +189,6 @@ partial class Enum
" class CompositionRoot {\n" +
" +CompositionRoot(IService1 service1, IService2 service21, IService2 service22, IService2 service23, IService3 service3, IService4 service41, IService4 service42)\n" +
" }\n" +
- " class IEnumerableᐸIService3ᐳ\n" +
" Service1 --|> IService1 : \n" +
" class Service1 {\n" +
" +Service1(IService2 service2)\n" +
@@ -216,6 +217,7 @@ partial class Enum
" class Service4 {\n" +
" +Service4()\n" +
" }\n" +
+ " class IEnumerableᐸIService3ᐳ\n" +
" class IService1 {\n" +
" <>\n" +
" }\n" +
@@ -235,10 +237,6 @@ partial class Enum
" CompositionRoot *-- Service3 : IService3\n" +
" CompositionRoot *-- Service4 : IService4\n" +
" CompositionRoot *-- Service4 : IService4\n" +
- " IEnumerableᐸIService3ᐳ *-- Service3 : IService3\n" +
- " IEnumerableᐸIService3ᐳ *-- Service3v2 : 2 IService3\n" +
- " IEnumerableᐸIService3ᐳ *-- Service3v3 : 3 IService3\n" +
- " IEnumerableᐸIService3ᐳ *-- Service3v4 : 4 IService3\n" +
" Service1 *-- Service2Enum : IService2\n" +
" Service2Enum o-- \"PerBlock\" IEnumerableᐸIService3ᐳ : IEnumerableᐸIService3ᐳ\n" +
" Service3 *-- Service4 : IService4\n" +
@@ -249,28 +247,32 @@ partial class Enum
" Service3v3 *-- Service4 : IService4\n" +
" Service3v4 *-- Service4 : IService4\n" +
" Service3v4 *-- Service4 : IService4\n" +
- " Enum ..> CompositionRoot : CompositionRoot TestPureDIByCR()";
+ " Enum ..> CompositionRoot : CompositionRoot TestPureDIByCR()\n" +
+ " IEnumerableᐸIService3ᐳ *-- Service3 : IService3\n" +
+ " IEnumerableᐸIService3ᐳ *-- Service3v2 : 2 IService3\n" +
+ " IEnumerableᐸIService3ᐳ *-- Service3v3 : 3 IService3\n" +
+ " IEnumerableᐸIService3ᐳ *-- Service3v4 : 4 IService3";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Enum()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Enum composite)
{
@@ -283,7 +285,7 @@ partial class Enum
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.Benchmarks.Model.CompositionRoot Resolve(Enum composition)
{
diff --git a/readme/FuncDetails.md b/readme/FuncDetails.md
index 455b4943a..2cedce6c1 100644
--- a/readme/FuncDetails.md
+++ b/readme/FuncDetails.md
@@ -67,56 +67,58 @@ classDiagram
```c#
partial class Func
{
- private readonly Func _rootM04D13di;
+ private readonly Func _rootM04D20di;
public Func()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Func(Func baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public partial Pure.DI.Benchmarks.Model.CompositionRoot TestPureDIByCR()
{
- System.Func perBlockM04D13di10_Func = new Func(
+ System.Func perBlockM04D20di10_Func = new Func(
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)768)]
() =>
{
- var value_M04D13di1 = new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
- return value_M04D13di1;
+ var value_M04D20di1 = new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
+ return value_M04D20di1;
});
- return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D13di10_Func)), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D13di10_Func), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D13di10_Func), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D13di10_Func), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
+ return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D20di10_Func)), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D20di10_Func), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D20di10_Func), new Pure.DI.Benchmarks.Model.Service2Func(perBlockM04D20di10_Func), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -129,18 +131,18 @@ partial class Func
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -208,25 +210,25 @@ partial class Func
" FuncᐸIService3ᐳ *-- Service3 : IService3";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Func()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Func composite)
{
@@ -239,7 +241,7 @@ partial class Func
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.Benchmarks.Model.CompositionRoot Resolve(Func composition)
{
diff --git a/readme/GrpcService.md b/readme/GrpcService.md
index 435bbcf48..dc2503269 100644
--- a/readme/GrpcService.md
+++ b/readme/GrpcService.md
@@ -53,7 +53,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 f1eb55fc7..b06a37012 100644
--- a/readme/Maui.md
+++ b/readme/Maui.md
@@ -208,7 +208,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 44c5212e6..52c3d5648 100644
--- a/readme/MinimalWebAPI.md
+++ b/readme/MinimalWebAPI.md
@@ -76,7 +76,7 @@ The [project file](/samples/WebAPI/WebAPI.csproj) looks like this:
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/SingletonDetails.md b/readme/SingletonDetails.md
index 5ac70bdcf..a5f66ec2a 100644
--- a/readme/SingletonDetails.md
+++ b/readme/SingletonDetails.md
@@ -69,59 +69,61 @@ classDiagram
```c#
partial class Singleton
{
- private readonly Singleton _rootM04D13di;
- private Pure.DI.Benchmarks.Model.Service1 _scopedM04D13di37_Service1;
- private Pure.DI.Benchmarks.Model.Service4 _scopedM04D13di40_Service4;
+ private readonly Singleton _rootM04D20di;
+ private Pure.DI.Benchmarks.Model.Service1 _scopedM04D20di37_Service1;
+ private Pure.DI.Benchmarks.Model.Service4 _scopedM04D20di40_Service4;
public Singleton()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Singleton(Singleton baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public partial Pure.DI.Benchmarks.Model.CompositionRoot TestPureDIByCR()
{
- if (_scopedM04D13di40_Service4 == null)
+ if (_scopedM04D20di40_Service4 == null)
{
- _scopedM04D13di40_Service4 = new Pure.DI.Benchmarks.Model.Service4();
+ _scopedM04D20di40_Service4 = new Pure.DI.Benchmarks.Model.Service4();
}
- if (_scopedM04D13di37_Service1 == null)
+ if (_scopedM04D20di37_Service1 == null)
{
- _scopedM04D13di37_Service1 = new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4)));
+ _scopedM04D20di37_Service1 = new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4)));
}
- return new Pure.DI.Benchmarks.Model.CompositionRoot(_scopedM04D13di37_Service1, new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4)), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4)), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4)), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D13di40_Service4, _scopedM04D13di40_Service4), _scopedM04D13di40_Service4, _scopedM04D13di40_Service4);
+ return new Pure.DI.Benchmarks.Model.CompositionRoot(_scopedM04D20di37_Service1, new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4)), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4)), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4)), new Pure.DI.Benchmarks.Model.Service3(_scopedM04D20di40_Service4, _scopedM04D20di40_Service4), _scopedM04D20di40_Service4, _scopedM04D20di40_Service4);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -134,18 +136,18 @@ partial class Singleton
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -215,25 +217,25 @@ partial class Singleton
" Singleton ..> CompositionRoot : CompositionRoot TestPureDIByCR()";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Singleton()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Singleton composite)
{
@@ -246,7 +248,7 @@ partial class Singleton
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.Benchmarks.Model.CompositionRoot Resolve(Singleton composition)
{
diff --git a/readme/TransientDetails.md b/readme/TransientDetails.md
index 45d7821cb..ca8b0dd2b 100644
--- a/readme/TransientDetails.md
+++ b/readme/TransientDetails.md
@@ -69,16 +69,16 @@ classDiagram
```c#
partial class Transient
{
- private readonly Transient _rootM04D13di;
+ private readonly Transient _rootM04D20di;
public Transient()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Transient(Transient baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
@@ -87,31 +87,33 @@ partial class Transient
return new Pure.DI.Benchmarks.Model.CompositionRoot(new Pure.DI.Benchmarks.Model.Service1(new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()))), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4())), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4())), new Pure.DI.Benchmarks.Model.Service2(new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4())), new Pure.DI.Benchmarks.Model.Service3(new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4()), new Pure.DI.Benchmarks.Model.Service4(), new Pure.DI.Benchmarks.Model.Service4());
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -124,18 +126,18 @@ partial class Transient
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -205,25 +207,25 @@ partial class Transient
" Transient ..> CompositionRoot : CompositionRoot TestPureDIByCR()";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Transient()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.Benchmarks.Model.CompositionRoot), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Transient composite)
{
@@ -236,7 +238,7 @@ partial class Transient
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.Benchmarks.Model.CompositionRoot Resolve(Transient composition)
{
diff --git a/readme/WebAPI.md b/readme/WebAPI.md
index 903b81fc3..6d65c9fd3 100644
--- a/readme/WebAPI.md
+++ b/readme/WebAPI.md
@@ -51,7 +51,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 1081a6303..b88698f4e 100644
--- a/readme/WebApp.md
+++ b/readme/WebApp.md
@@ -51,7 +51,7 @@ The [project file](/samples/WebApp/WebApp.csproj) looks like this:
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/WinFormsApp.md b/readme/WinFormsApp.md
index 59535e9c7..136b3f8bc 100644
--- a/readme/WinFormsApp.md
+++ b/readme/WinFormsApp.md
@@ -55,7 +55,7 @@ The [project file](/samples/WinFormsApp/WinFormsApp.csproj) looks like this:
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/WinFormsAppNetCore.md b/readme/WinFormsAppNetCore.md
index 8ae490b9a..2b4967619 100644
--- a/readme/WinFormsAppNetCore.md
+++ b/readme/WinFormsAppNetCore.md
@@ -62,7 +62,7 @@ The [project file](/samples/WinFormsAppNetCore/WinFormsAppNetCore.csproj) looks
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/Wpf.md b/readme/Wpf.md
index 35027c53f..d1d093223 100644
--- a/readme/Wpf.md
+++ b/readme/Wpf.md
@@ -68,7 +68,7 @@ The [project file](/samples/WpfAppNetCore/WpfAppNetCore.csproj) looks like this:
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/readme/a-few-partial-classes.md b/readme/a-few-partial-classes.md
index 1d33cf881..583a0e0c1 100644
--- a/readme/a-few-partial-classes.md
+++ b/readme/a-few-partial-classes.md
@@ -79,16 +79,16 @@ classDiagram
```c#
partial class Composition
{
- private readonly Composition _rootM04D13di;
+ private readonly Composition _rootM04D20di;
public Composition()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Composition(Composition baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
public Pure.DI.UsageTests.Advanced.SeveralPartialClassesScenario.IService Root
@@ -100,31 +100,33 @@ partial class Composition
}
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -137,18 +139,18 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -187,25 +189,25 @@ partial class Composition
" Composition ..> Service : IService Root";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Composition()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.UsageTests.Advanced.SeveralPartialClassesScenario.IService), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.UsageTests.Advanced.SeveralPartialClassesScenario.IService), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Composition composite)
{
@@ -218,7 +220,7 @@ partial class Composition
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.UsageTests.Advanced.SeveralPartialClassesScenario.IService Resolve(Composition composition)
{
diff --git a/readme/accumulators.md b/readme/accumulators.md
index 19f84b18e..a0f01f033 100644
--- a/readme/accumulators.md
+++ b/readme/accumulators.md
@@ -90,20 +90,20 @@ classDiagram
```c#
partial class Composition
{
- private readonly Composition _rootM04D13di;
- private readonly object _lockM04D13di;
- private Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency _singletonM04D13di38_XyzDependency;
+ private readonly Composition _rootM04D20di;
+ private readonly object _lockM04D20di;
+ private Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency _singletonM04D20di38_XyzDependency;
public Composition()
{
- _rootM04D13di = this;
- _lockM04D13di = new object();
+ _rootM04D20di = this;
+ _lockM04D20di = new object();
}
internal Composition(Composition baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
- _lockM04D13di = _rootM04D13di._lockM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
+ _lockM04D20di = _rootM04D20di._lockM04D20di;
}
public (Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator) Root
@@ -111,62 +111,64 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
get
{
- var accumulatorM04D13di42 = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator();
- Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency perBlockM04D13di4_AbcDependency = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency();
- if (_rootM04D13di._singletonM04D13di38_XyzDependency == null)
+ var accumulatorM04D20di42 = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator();
+ Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency perBlockM04D20di4_AbcDependency = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency();
+ if (_rootM04D20di._singletonM04D20di38_XyzDependency == null)
{
- lock (_lockM04D13di)
+ lock (_lockM04D20di)
{
- if (_rootM04D13di._singletonM04D13di38_XyzDependency == null)
+ if (_rootM04D20di._singletonM04D20di38_XyzDependency == null)
{
- Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency _singletonM04D13di38_XyzDependencyTemp;
- _singletonM04D13di38_XyzDependencyTemp = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency();
- accumulatorM04D13di42.Add(_singletonM04D13di38_XyzDependencyTemp);
+ Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency _singletonM04D20di38_XyzDependencyTemp;
+ _singletonM04D20di38_XyzDependencyTemp = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.XyzDependency();
+ accumulatorM04D20di42.Add(_singletonM04D20di38_XyzDependencyTemp);
global::System.Threading.Thread.MemoryBarrier();
- _singletonM04D13di38_XyzDependency = _singletonM04D13di38_XyzDependencyTemp;
- _rootM04D13di._singletonM04D13di38_XyzDependency = _singletonM04D13di38_XyzDependency;
+ _singletonM04D20di38_XyzDependency = _singletonM04D20di38_XyzDependencyTemp;
+ _rootM04D20di._singletonM04D20di38_XyzDependency = _singletonM04D20di38_XyzDependency;
}
}
}
- Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency transientM04D13di3_AbcDependency = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency();
- lock (_lockM04D13di)
+ Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency transientM04D20di3_AbcDependency = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.AbcDependency();
+ lock (_lockM04D20di)
{
- accumulatorM04D13di42.Add(transientM04D13di3_AbcDependency);
+ accumulatorM04D20di42.Add(transientM04D20di3_AbcDependency);
}
- Pure.DI.UsageTests.Advanced.AccumulatorScenario.Service transientM04D13di1_Service = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.Service(transientM04D13di3_AbcDependency, _rootM04D13di._singletonM04D13di38_XyzDependency, perBlockM04D13di4_AbcDependency);
- lock (_lockM04D13di)
+ Pure.DI.UsageTests.Advanced.AccumulatorScenario.Service transientM04D20di1_Service = new Pure.DI.UsageTests.Advanced.AccumulatorScenario.Service(transientM04D20di3_AbcDependency, _rootM04D20di._singletonM04D20di38_XyzDependency, perBlockM04D20di4_AbcDependency);
+ lock (_lockM04D20di)
{
- accumulatorM04D13di42.Add(transientM04D13di1_Service);
+ accumulatorM04D20di42.Add(transientM04D20di1_Service);
}
- return (transientM04D13di1_Service, accumulatorM04D13di42);
+ return (transientM04D20di1_Service, accumulatorM04D20di42);
}
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -179,18 +181,18 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -241,25 +243,25 @@ partial class Composition
" Composition ..> ValueTupleᐸIServiceˏMyAccumulatorᐳ : ValueTupleᐸIServiceˏMyAccumulatorᐳ Root";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Composition()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di<(Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator)>.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di<(Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator)>.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof((Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator)), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof((Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator)), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Composition composite)
{
@@ -272,7 +274,7 @@ partial class Composition
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver, global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver, global::Pure.DI.IResolver
{
public (Pure.DI.UsageTests.Advanced.AccumulatorScenario.IService service, Pure.DI.UsageTests.Advanced.AccumulatorScenario.MyAccumulator accumulator) Resolve(Composition composition)
{
diff --git a/readme/advanced-interception.md b/readme/advanced-interception.md
index 357c9072d..acc3543fe 100644
--- a/readme/advanced-interception.md
+++ b/readme/advanced-interception.md
@@ -147,16 +147,16 @@ classDiagram
```c#
partial class Composition
{
- private readonly Composition _rootM04D13di;
+ private readonly Composition _rootM04D20di;
public Composition()
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
}
internal Composition(Composition baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
+ _rootM04D20di = baseComposition._rootM04D20di;
}
public Pure.DI.UsageTests.Interception.AdvancedInterceptionScenario.IService Root
@@ -168,31 +168,33 @@ partial class Composition
}
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -205,18 +207,18 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -257,25 +259,25 @@ partial class Composition
" Composition ..> Service : IService Root";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Composition()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets>.Create(
1,
- out _bucketSizeM04D13di,
+ out _bucketSizeM04D20di,
new global::Pure.DI.Pair>[1]
{
- new global::Pure.DI.Pair>(typeof(Pure.DI.UsageTests.Interception.AdvancedInterceptionScenario.IService), valResolverM04D13di_0000)
+ new global::Pure.DI.Pair>(typeof(Pure.DI.UsageTests.Interception.AdvancedInterceptionScenario.IService), valResolverM04D20di_0000)
});
}
- private sealed class ResolverM04D13di: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di: global::Pure.DI.IResolver
{
- public static global::Pure.DI.IResolver Value = new ResolverM04D13di();
+ public static global::Pure.DI.IResolver Value = new ResolverM04D20di();
public T Resolve(Composition composite)
{
@@ -288,7 +290,7 @@ partial class Composition
}
}
- private sealed class ResolverM04D13di_0000: global::Pure.DI.IResolver
+ private sealed class ResolverM04D20di_0000: global::Pure.DI.IResolver
{
public Pure.DI.UsageTests.Interception.AdvancedInterceptionScenario.IService Resolve(Composition composition)
{
diff --git a/readme/arguments.md b/readme/arguments.md
index c65101c64..6836e9c4d 100644
--- a/readme/arguments.md
+++ b/readme/arguments.md
@@ -96,27 +96,27 @@ classDiagram
```c#
partial class Composition
{
- private readonly Composition _rootM04D13di;
- private readonly int _argM04D13di_id;
- private readonly string _argM04D13di_serviceName;
+ private readonly Composition _rootM04D20di;
+ private readonly int _argM04D20di_id;
+ private readonly string _argM04D20di_serviceName;
public Composition(int id, string serviceName)
{
- _rootM04D13di = this;
+ _rootM04D20di = this;
if (ReferenceEquals(serviceName, null))
{
throw new global::System.ArgumentNullException("serviceName");
}
- _argM04D13di_id = id;
- _argM04D13di_serviceName = serviceName;
+ _argM04D20di_id = id;
+ _argM04D20di_serviceName = serviceName;
}
internal Composition(Composition baseComposition)
{
- _rootM04D13di = baseComposition._rootM04D13di;
- _argM04D13di_id = baseComposition._argM04D13di_id;
- _argM04D13di_serviceName = baseComposition._argM04D13di_serviceName;
+ _rootM04D20di = baseComposition._rootM04D20di;
+ _argM04D20di_id = baseComposition._argM04D20di_id;
+ _argM04D20di_serviceName = baseComposition._argM04D20di_serviceName;
}
public Pure.DI.UsageTests.Basics.ArgumentsScenario.IService Root
@@ -124,35 +124,37 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
get
{
- return new Pure.DI.UsageTests.Basics.ArgumentsScenario.Service(_argM04D13di_serviceName, new Pure.DI.UsageTests.Basics.ArgumentsScenario.Dependency(_argM04D13di_id));
+ return new Pure.DI.UsageTests.Basics.ArgumentsScenario.Service(_argM04D20di_serviceName, new Pure.DI.UsageTests.Basics.ArgumentsScenario.Dependency(_argM04D20di_id));
}
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve()
{
- return ResolverM04D13di.Value.Resolve(this);
+ return ResolverM04D20di.Value.Resolve(this);
}
+ [global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public T Resolve(object? tag)
{
- return ResolverM04D13di.Value.ResolveByTag(this, tag);
+ return ResolverM04D20di.Value.ResolveByTag(this, tag);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D13di(type, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.Resolve(this) : ResolveM04D20di(type, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, int index)
+ private object ResolveM04D20di(global::System.Type type, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.Resolve(this);
@@ -165,18 +167,18 @@ partial class Composition
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x100)]
public object Resolve(global::System.Type type, object? tag)
{
- var index = (int)(_bucketSizeM04D13di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
- ref var pair = ref _bucketsM04D13di[index];
- return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D13di(type, tag, index);
+ var index = (int)(_bucketSizeM04D20di * ((uint)global::System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(type) % 1));
+ ref var pair = ref _bucketsM04D20di[index];
+ return pair.Key == type ? pair.Value.ResolveByTag(this, tag) : ResolveM04D20di(type, tag, index);
}
[global::System.Runtime.CompilerServices.MethodImpl((global::System.Runtime.CompilerServices.MethodImplOptions)0x8)]
- private object ResolveM04D13di(global::System.Type type, object? tag, int index)
+ private object ResolveM04D20di(global::System.Type type, object? tag, int index)
{
- var finish = index + _bucketSizeM04D13di;
+ var finish = index + _bucketSizeM04D20di;
while (++index < finish)
{
- ref var pair = ref _bucketsM04D13di[index];
+ ref var pair = ref _bucketsM04D20di[index];
if (pair.Key == type)
{
return pair.Value.ResolveByTag(this, tag);
@@ -219,25 +221,25 @@ partial class Composition
" Composition ..> Service : IService Root";
}
- private readonly static int _bucketSizeM04D13di;
- private readonly static global::Pure.DI.Pair>[] _bucketsM04D13di;
+ private readonly static int _bucketSizeM04D20di;
+ private readonly static global::Pure.DI.Pair>[] _bucketsM04D20di;
static Composition()
{
- var valResolverM04D13di_0000 = new ResolverM04D13di_0000();
- ResolverM04D13di.Value = valResolverM04D13di_0000;
- _bucketsM04D13di = global::Pure.DI.Buckets>.Create(
+ var valResolverM04D20di_0000 = new ResolverM04D20di_0000();
+ ResolverM04D20di.Value = valResolverM04D20di_0000;
+ _bucketsM04D20di = global::Pure.DI.Buckets