diff --git a/build/build.csproj b/build/build.csproj
index 59bcf9fb5..64ebb864a 100644
--- a/build/build.csproj
+++ b/build/build.csproj
@@ -9,7 +9,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/samples/AvaloniaApp/AvaloniaApp.csproj b/samples/AvaloniaApp/AvaloniaApp.csproj
index 94a358b2b..b68752e48 100644
--- a/samples/AvaloniaApp/AvaloniaApp.csproj
+++ b/samples/AvaloniaApp/AvaloniaApp.csproj
@@ -14,12 +14,12 @@
-
-
-
-
+
+
+
+
-
+
diff --git a/samples/GrpcService/GrpcService.csproj b/samples/GrpcService/GrpcService.csproj
index 2943c6997..221007d6c 100644
--- a/samples/GrpcService/GrpcService.csproj
+++ b/samples/GrpcService/GrpcService.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/src/Pure.DI.Core/Components/Api.g.cs b/src/Pure.DI.Core/Components/Api.g.cs
index 2666fcc8d..ab4ee2e58 100644
--- a/src/Pure.DI.Core/Components/Api.g.cs
+++ b/src/Pure.DI.Core/Components/Api.g.cs
@@ -1,5 +1,5 @@
//
-#if !PUREDI_API_SUPPRESSION || PUREDI_API_V2
+#if !PUREDI_API_SUPPRESSION || PUREDI_API_V1
#pragma warning disable
#if !NET40_OR_GREATER && !NETSTANDARD2_0_OR_GREATER && !NETCOREAPP2_0_OR_GREATER
diff --git a/src/Pure.DI.Core/Components/GenericTypeArguments.g.cs b/src/Pure.DI.Core/Components/GenericTypeArguments.g.cs
index 62ddcf5be..5707dffbe 100644
--- a/src/Pure.DI.Core/Components/GenericTypeArguments.g.cs
+++ b/src/Pure.DI.Core/Components/GenericTypeArguments.g.cs
@@ -1,5 +1,5 @@
//
-#if !PUREDI_API_SUPPRESSION || PUREDI_API_V2
+#if !PUREDI_API_SUPPRESSION || PUREDI_API_V1
#pragma warning disable
namespace Pure.DI
{
diff --git a/src/Pure.DI.Core/Components/GenericTypeArguments.g.tt b/src/Pure.DI.Core/Components/GenericTypeArguments.g.tt
index fe949ab39..3c7a6fb6f 100644
--- a/src/Pure.DI.Core/Components/GenericTypeArguments.g.tt
+++ b/src/Pure.DI.Core/Components/GenericTypeArguments.g.tt
@@ -3,7 +3,7 @@
<#@ assembly name="netstandard" #>
<#@ import namespace="System.Collections.Generic" #>
//
-#if !PUREDI_API_SUPPRESSION || PUREDI_API_V2
+#if !PUREDI_API_SUPPRESSION || PUREDI_API_V1
#pragma warning disable
namespace Pure.DI
{
diff --git a/src/Pure.DI.Core/Core/Code/ClassBuilder.cs b/src/Pure.DI.Core/Core/Code/ClassBuilder.cs
index c93e8aad3..8f6eec0c4 100644
--- a/src/Pure.DI.Core/Core/Code/ClassBuilder.cs
+++ b/src/Pure.DI.Core/Core/Code/ClassBuilder.cs
@@ -2,19 +2,19 @@
namespace Pure.DI.Core.Code;
internal sealed class ClassBuilder(
- [Tag(WellknownTag.UsingDeclarationsBuilder)] IBuilder usingDeclarationsBuilder,
- [Tag(WellknownTag.FieldsBuilder)] IBuilder fieldsBuilder,
- [Tag(WellknownTag.ArgFieldsBuilder)] IBuilder argFieldsBuilder,
- [Tag(WellknownTag.ParameterizedConstructorBuilder)] IBuilder parameterizedConstructorBuilder,
- [Tag(WellknownTag.DefaultConstructorBuilder)] IBuilder defaultConstructorBuilder,
- [Tag(WellknownTag.ScopeConstructorBuilder)] IBuilder scopeConstructorBuilder,
- [Tag(WellknownTag.RootMethodsBuilder)] IBuilder rootPropertiesBuilder,
- [Tag(WellknownTag.ApiMembersBuilder)] IBuilder apiMembersBuilder,
- [Tag(WellknownTag.DisposeMethodBuilder)] IBuilder disposeMethodBuilder,
- [Tag(WellknownTag.ToStringMethodBuilder)] IBuilder toStringBuilder,
- [Tag(WellknownTag.ResolversFieldsBuilder)] IBuilder resolversFieldsBuilder,
- [Tag(WellknownTag.StaticConstructorBuilder)] IBuilder staticConstructorBuilder,
- [Tag(WellknownTag.ResolverClassesBuilder)] IBuilder resolversClassesBuilder,
+ [Tag(typeof(UsingDeclarationsBuilder))] IBuilder usingDeclarationsBuilder,
+ [Tag(typeof(FieldsBuilder))] IBuilder fieldsBuilder,
+ [Tag(typeof(ArgFieldsBuilder))] IBuilder argFieldsBuilder,
+ [Tag(typeof(ParameterizedConstructorBuilder))] IBuilder parameterizedConstructorBuilder,
+ [Tag(typeof(DefaultConstructorBuilder))] IBuilder defaultConstructorBuilder,
+ [Tag(typeof(ScopeConstructorBuilder))] IBuilder scopeConstructorBuilder,
+ [Tag(typeof(RootMethodsBuilder))] IBuilder rootPropertiesBuilder,
+ [Tag(typeof(ApiMembersBuilder))] IBuilder apiMembersBuilder,
+ [Tag(typeof(DisposeMethodBuilder))] IBuilder disposeMethodBuilder,
+ [Tag(typeof(ToStringMethodBuilder))] IBuilder toStringBuilder,
+ [Tag(typeof(ResolversFieldsBuilder))] IBuilder resolversFieldsBuilder,
+ [Tag(typeof(StaticConstructorBuilder))] IBuilder staticConstructorBuilder,
+ [Tag(typeof(ResolverClassesBuilder))] IBuilder resolversClassesBuilder,
[Tag(typeof(ClassCommenter))] ICommenter classCommenter,
IInformation information,
CancellationToken cancellationToken)
diff --git a/src/Pure.DI.Core/Core/CodeBuilder.cs b/src/Pure.DI.Core/Core/CodeBuilder.cs
index 3463a1b73..daf105691 100644
--- a/src/Pure.DI.Core/Core/CodeBuilder.cs
+++ b/src/Pure.DI.Core/Core/CodeBuilder.cs
@@ -6,8 +6,8 @@ internal class CodeBuilder(
IBuilder dependencyGraphBuilder,
IValidator dependencyGraphValidator,
IBuilder> rootsBuilder,
- [Tag(WellknownTag.CompositionBuilder)] IBuilder compositionBuilder,
- [Tag(WellknownTag.ClassBuilder)] IBuilder classBuilder,
+ IBuilder compositionBuilder,
+ IBuilder classBuilder,
IValidator metadataValidator,
IGeneratorSources sources,
CancellationToken cancellationToken)
diff --git a/src/Pure.DI.Core/Core/WellknownTag.cs b/src/Pure.DI.Core/Core/WellknownTag.cs
deleted file mode 100644
index abea6bfd7..000000000
--- a/src/Pure.DI.Core/Core/WellknownTag.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Pure.DI.Core;
-
-internal enum WellknownTag
-{
- CompositionBuilder,
- ClassBuilder,
- DisposeMethodBuilder,
- RootMethodsBuilder,
- UsingDeclarationsBuilder,
- ArgFieldsBuilder,
- FieldsBuilder,
- ScopeConstructorBuilder,
- ParameterizedConstructorBuilder,
- DefaultConstructorBuilder,
- ResolverClassesBuilder,
- StaticConstructorBuilder,
- ApiMembersBuilder,
- ResolversFieldsBuilder,
- ToStringMethodBuilder
-}
\ No newline at end of file
diff --git a/src/Pure.DI.Core/Features/Default.g.cs b/src/Pure.DI.Core/Features/Default.g.cs
index 91bf63c32..b797fde6b 100644
--- a/src/Pure.DI.Core/Features/Default.g.cs
+++ b/src/Pure.DI.Core/Features/Default.g.cs
@@ -1,5 +1,5 @@
//
-#if !PUREDI_API_SUPPRESSION || PUREDI_API_V2
+#if !PUREDI_API_SUPPRESSION || PUREDI_API_V1
#pragma warning disable
namespace Pure.DI
diff --git a/src/Pure.DI.Core/Generator.Composition.cs b/src/Pure.DI.Core/Generator.Composition.cs
index eb838f48b..dd7c6e35d 100644
--- a/src/Pure.DI.Core/Generator.Composition.cs
+++ b/src/Pure.DI.Core/Generator.Composition.cs
@@ -15,28 +15,29 @@ public partial class Generator
[Conditional("DI")]
private static void Setup() => DI.Setup(nameof(Generator))
.Hint(Hint.Resolve, "Off")
-
- .RootArg("options")
- .RootArg("sources")
- .RootArg("diagnostic")
- .RootArg("cancellationToken")
- .Root>("Api")
- .Root("Observers")
- .Root, Unit>>("CreateGenerator", kind: RootKinds.Private)
+ // Roots
+ .Root>("Api")
+ .Root("Observers")
+ .Root, Unit>>("CreateGenerator", kind: RootKinds.Private)
+
+ .RootArg("options")
+ .RootArg("sources")
+ .RootArg("diagnostic")
+ .RootArg("cancellationToken")
// Transient
- .Bind().To()
- .Bind().To()
- .Bind().To()
- .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
.Bind>().To(_ => StringComparer.InvariantCultureIgnoreCase)
// Singleton
.DefaultLifetime(Singleton)
- .Bind>().To>()
- .Bind().Bind().To()
- .Bind>().To(ctx =>
+ .Bind().To>()
+ .Bind().To()
+ .Bind().To(ctx =>
{
ctx.Inject>>(out var api);
return api.Build(Unit.Shared);
@@ -44,75 +45,73 @@ private static void Setup() => DI.Setup(nameof(Generator))
// PerBlock
.DefaultLifetime(PerBlock)
- .Bind().To()
- .Bind().To()
- .Bind, Uri>>().To()
- .Bind().To()
- .Bind>().To>()
- .Bind().To()
- .Bind().To()
- .Bind().To()
- .Bind>().To()
- .Bind>().To()
- .Bind().To()
- .Bind>().To>()
- .Bind().To()
- .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To>()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To>()
+ .Bind().To()
+ .Bind().To()
// Comments
- .Bind>(typeof(ClassCommenter)).To()
- .Bind>(typeof(ParameterizedConstructorCommenter)).To()
- .Bind>(typeof(RootMethodsCommenter)).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
// Builders
- .Bind, IEnumerable>>().To()
- .Bind>().To()
- .Bind, IEnumerable>>().To()
- .Bind>>().To()
- .Bind>().To()
- .Bind>>().To()
- .Bind>>(typeof(FactoryDependencyNodeBuilder)).To()
- .Bind>>(typeof(ArgDependencyNodeBuilder)).To()
- .Bind>>(typeof(ConstructDependencyNodeBuilder)).To()
- .Bind>>(typeof(ImplementationDependencyNodeBuilder)).To()
- .Bind>>(typeof(RootDependencyNodeBuilder)).To()
- .Bind>().To()
- .Bind>>().To()
- .Bind>>().To()
- .Bind>().To()
- .Bind>>().To()
- .Bind, Unit>>().To()
- .Bind, MdFactory>>().To()
- .Bind>(WellknownTag.CompositionBuilder).To()
- .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind(Tag.Unique).To()
+ .Bind(Tag.Unique).To()
+ .Bind(Tag.Unique).To()
+ .Bind(Tag.Unique).To()
+ .Bind(Tag.Unique).To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
// Code builders
- .Bind>().To()
- .Bind>().To()
- .Bind>().To()
- .Bind>().To()
- .Bind>().To()
- .Bind>().To()
-
- // Code
- .Bind>(WellknownTag.ClassBuilder).To()
- .Bind>(WellknownTag.DisposeMethodBuilder).To()
- .Bind>(WellknownTag.RootMethodsBuilder).To()
- .Bind>(WellknownTag.UsingDeclarationsBuilder).To()
- .Bind>(WellknownTag.ArgFieldsBuilder).To()
- .Bind>(WellknownTag.FieldsBuilder).To()
- .Bind>(WellknownTag.ScopeConstructorBuilder).To()
- .Bind>(WellknownTag.ParameterizedConstructorBuilder).To()
- .Bind>(WellknownTag.DefaultConstructorBuilder).To()
- .Bind>(WellknownTag.ResolverClassesBuilder).To()
- .Bind>(WellknownTag.StaticConstructorBuilder).To()
- .Bind>(WellknownTag.ApiMembersBuilder).To()
- .Bind>(WellknownTag.ResolversFieldsBuilder).To()
- .Bind>(WellknownTag.ToStringMethodBuilder).To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind().To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
+ .Bind(Tag.Type).To()
// PerResolve
.DefaultLifetime(PerResolve)
- .Bind>().To()
- .Bind().To()
- .Bind().To();
+ .Bind().To()
+ .Bind().To()
+ .Bind().To();
}
\ No newline at end of file
diff --git a/src/Pure.DI.Core/Pure.DI.Core.csproj b/src/Pure.DI.Core/Pure.DI.Core.csproj
index a4a904c20..498345025 100644
--- a/src/Pure.DI.Core/Pure.DI.Core.csproj
+++ b/src/Pure.DI.Core/Pure.DI.Core.csproj
@@ -2,11 +2,11 @@