diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index b53da50..42173e4 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -3,10 +3,11 @@
true
-
-
-
-
+
+
+
+
+
@@ -14,7 +15,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/GenericQueryable/Fetching/FetchPath.cs b/src/GenericQueryable.Abstractions/Fetching/FetchPath.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/FetchPath.cs
rename to src/GenericQueryable.Abstractions/Fetching/FetchPath.cs
diff --git a/src/GenericQueryable/Fetching/FetchRule.cs b/src/GenericQueryable.Abstractions/Fetching/FetchRule.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/FetchRule.cs
rename to src/GenericQueryable.Abstractions/Fetching/FetchRule.cs
diff --git a/src/GenericQueryable/Fetching/IFetchService.cs b/src/GenericQueryable.Abstractions/Fetching/IFetchService.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/IFetchService.cs
rename to src/GenericQueryable.Abstractions/Fetching/IFetchService.cs
diff --git a/src/GenericQueryable/Fetching/IPropertyFetchRule.cs b/src/GenericQueryable.Abstractions/Fetching/IPropertyFetchRule.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/IPropertyFetchRule.cs
rename to src/GenericQueryable.Abstractions/Fetching/IPropertyFetchRule.cs
diff --git a/src/GenericQueryable/Fetching/PropertyFetchRule.cs b/src/GenericQueryable.Abstractions/Fetching/PropertyFetchRule.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/PropertyFetchRule.cs
rename to src/GenericQueryable.Abstractions/Fetching/PropertyFetchRule.cs
diff --git a/src/GenericQueryable/Fetching/UntypedFetchRule.cs b/src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/UntypedFetchRule.cs
rename to src/GenericQueryable.Abstractions/Fetching/UntypedFetchRule.cs
diff --git a/src/GenericQueryable.Abstractions/GenericQueryable.Abstractions.csproj b/src/GenericQueryable.Abstractions/GenericQueryable.Abstractions.csproj
new file mode 100644
index 0000000..6921ac2
--- /dev/null
+++ b/src/GenericQueryable.Abstractions/GenericQueryable.Abstractions.csproj
@@ -0,0 +1,12 @@
+
+
+
+ IvAt.GenericQueryable.Abstractions
+ GenericQueryable
+
+
+
+
+
+
+
diff --git a/src/GenericQueryable/GenericQueryableExtensions.cs b/src/GenericQueryable.Abstractions/GenericQueryableExtensions.cs
similarity index 100%
rename from src/GenericQueryable/GenericQueryableExtensions.cs
rename to src/GenericQueryable.Abstractions/GenericQueryableExtensions.cs
diff --git a/src/GenericQueryable/GenericQueryableFetchExtensions.cs b/src/GenericQueryable.Abstractions/GenericQueryableFetchExtensions.cs
similarity index 100%
rename from src/GenericQueryable/GenericQueryableFetchExtensions.cs
rename to src/GenericQueryable.Abstractions/GenericQueryableFetchExtensions.cs
diff --git a/src/GenericQueryable/PropertyFetchRuleExtensions.cs b/src/GenericQueryable.Abstractions/PropertyFetchRuleExtensions.cs
similarity index 100%
rename from src/GenericQueryable/PropertyFetchRuleExtensions.cs
rename to src/GenericQueryable.Abstractions/PropertyFetchRuleExtensions.cs
diff --git a/src/GenericQueryable/Services/AsyncEnumerableMethodExtractor.cs b/src/GenericQueryable.Abstractions/Services/AsyncEnumerableMethodExtractor.cs
similarity index 100%
rename from src/GenericQueryable/Services/AsyncEnumerableMethodExtractor.cs
rename to src/GenericQueryable.Abstractions/Services/AsyncEnumerableMethodExtractor.cs
diff --git a/src/GenericQueryable/Services/AsyncEnumerableMethodRedirector.cs b/src/GenericQueryable.Abstractions/Services/AsyncEnumerableMethodRedirector.cs
similarity index 100%
rename from src/GenericQueryable/Services/AsyncEnumerableMethodRedirector.cs
rename to src/GenericQueryable.Abstractions/Services/AsyncEnumerableMethodRedirector.cs
diff --git a/src/GenericQueryable/Services/GenericQueryableExecutor.cs b/src/GenericQueryable.Abstractions/Services/GenericQueryableExecutor.cs
similarity index 100%
rename from src/GenericQueryable/Services/GenericQueryableExecutor.cs
rename to src/GenericQueryable.Abstractions/Services/GenericQueryableExecutor.cs
diff --git a/src/GenericQueryable/Services/IGenericQueryProvider.cs b/src/GenericQueryable.Abstractions/Services/IGenericQueryProvider.cs
similarity index 100%
rename from src/GenericQueryable/Services/IGenericQueryProvider.cs
rename to src/GenericQueryable.Abstractions/Services/IGenericQueryProvider.cs
diff --git a/src/GenericQueryable/Services/IGenericQueryableExecutor.cs b/src/GenericQueryable.Abstractions/Services/IGenericQueryableExecutor.cs
similarity index 100%
rename from src/GenericQueryable/Services/IGenericQueryableExecutor.cs
rename to src/GenericQueryable.Abstractions/Services/IGenericQueryableExecutor.cs
diff --git a/src/GenericQueryable/Services/IMethodRedirector.cs b/src/GenericQueryable.Abstractions/Services/IMethodRedirector.cs
similarity index 100%
rename from src/GenericQueryable/Services/IMethodRedirector.cs
rename to src/GenericQueryable.Abstractions/Services/IMethodRedirector.cs
diff --git a/src/GenericQueryable/Services/ITargetMethodExtractor.cs b/src/GenericQueryable.Abstractions/Services/ITargetMethodExtractor.cs
similarity index 100%
rename from src/GenericQueryable/Services/ITargetMethodExtractor.cs
rename to src/GenericQueryable.Abstractions/Services/ITargetMethodExtractor.cs
diff --git a/src/GenericQueryable/Fetching/IgnoreFetchService.cs b/src/GenericQueryable.Abstractions/Services/IgnoreFetchService.cs
similarity index 100%
rename from src/GenericQueryable/Fetching/IgnoreFetchService.cs
rename to src/GenericQueryable.Abstractions/Services/IgnoreFetchService.cs
diff --git a/src/GenericQueryable/Services/MethodRedirector.cs b/src/GenericQueryable.Abstractions/Services/MethodRedirector.cs
similarity index 100%
rename from src/GenericQueryable/Services/MethodRedirector.cs
rename to src/GenericQueryable.Abstractions/Services/MethodRedirector.cs
diff --git a/src/GenericQueryable/Services/SyncMethodRedirector.cs b/src/GenericQueryable.Abstractions/Services/SyncMethodRedirector.cs
similarity index 100%
rename from src/GenericQueryable/Services/SyncMethodRedirector.cs
rename to src/GenericQueryable.Abstractions/Services/SyncMethodRedirector.cs
diff --git a/src/GenericQueryable/Services/SyncTargetMethodExtractor.cs b/src/GenericQueryable.Abstractions/Services/SyncTargetMethodExtractor.cs
similarity index 100%
rename from src/GenericQueryable/Services/SyncTargetMethodExtractor.cs
rename to src/GenericQueryable.Abstractions/Services/SyncTargetMethodExtractor.cs
diff --git a/src/GenericQueryable/Services/TargetMethodExtractor.cs b/src/GenericQueryable.Abstractions/Services/TargetMethodExtractor.cs
similarity index 100%
rename from src/GenericQueryable/Services/TargetMethodExtractor.cs
rename to src/GenericQueryable.Abstractions/Services/TargetMethodExtractor.cs
diff --git a/src/GenericQueryable.UnitTests/GenericQueryable.UnitTests.csproj b/src/GenericQueryable.UnitTests/GenericQueryable.UnitTests.csproj
index 8bfa56f..72a5741 100644
--- a/src/GenericQueryable.UnitTests/GenericQueryable.UnitTests.csproj
+++ b/src/GenericQueryable.UnitTests/GenericQueryable.UnitTests.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/src/GenericQueryable.slnx b/src/GenericQueryable.slnx
index c020c8e..b5ca9cf 100644
--- a/src/GenericQueryable.slnx
+++ b/src/GenericQueryable.slnx
@@ -8,6 +8,7 @@
+
diff --git a/src/GenericQueryable/DependencyInjection/GenericQueryableSetup.cs b/src/GenericQueryable/DependencyInjection/GenericQueryableSetup.cs
index efa2109..6c0b51e 100644
--- a/src/GenericQueryable/DependencyInjection/GenericQueryableSetup.cs
+++ b/src/GenericQueryable/DependencyInjection/GenericQueryableSetup.cs
@@ -1,29 +1,51 @@
-using GenericQueryable.Fetching;
+using CommonFramework.DependencyInjection;
+
+using GenericQueryable.Fetching;
using GenericQueryable.Services;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
namespace GenericQueryable.DependencyInjection;
public class GenericQueryableSetup : IGenericQueryableSetup
{
- private Type targetMethodExtractorType = typeof(SyncTargetMethodExtractor);
-
private Type fetchServiceType = typeof(IgnoreFetchService);
- private readonly List fetchRuleExpanderTypeList = [typeof(FetchRuleHeaderExpander)];
+ private Type targetMethodExtractorType = typeof(SyncTargetMethodExtractor);
+
+ private readonly List fetchRuleExpanderTypeList = [];
- private readonly List fetchRuleHeaderInfoList = new();
+ private readonly List fetchRuleHeaderInfoList = [];
public void Initialize(IServiceCollection services)
{
- services.AddSingleton();
- services.AddSingleton();
+ if (!services.AlreadyInitialized())
+ {
+ services.TryAddSingleton();
+ services.TryAddSingleton();
+
+ services.AddSingleton();
+ services.AddKeyedSingleton(RootFetchRuleExpander.Key);
+ }
- services.AddSingleton(typeof(IFetchService), this.fetchServiceType);
- services.AddSingleton(typeof(ITargetMethodExtractor), this.targetMethodExtractorType);
+ if (services.AlreadyInitialized())
+ {
+ services.ReplaceSingleton(typeof(IFetchService), this.fetchServiceType);
+ }
+ else
+ {
+ services.AddSingleton(typeof(IFetchService), this.fetchServiceType);
+ }
- services.AddKeyedSingleton(RootFetchRuleExpander.Key);
+ if (services.AlreadyInitialized())
+ {
+ services.ReplaceSingleton(typeof(ITargetMethodExtractor), this.targetMethodExtractorType);
+ }
+ else
+ {
+ services.AddSingleton(typeof(ITargetMethodExtractor), this.targetMethodExtractorType);
+ }
foreach (var fetchRuleExpanderType in this.fetchRuleExpanderTypeList)
{
diff --git a/src/GenericQueryable/GenericQueryable.csproj b/src/GenericQueryable/GenericQueryable.csproj
index 648f9e5..5b18b6a 100644
--- a/src/GenericQueryable/GenericQueryable.csproj
+++ b/src/GenericQueryable/GenericQueryable.csproj
@@ -5,8 +5,11 @@
-
+
+
+
+
diff --git a/src/__SolutionItems/CommonAssemblyInfo.cs b/src/__SolutionItems/CommonAssemblyInfo.cs
index 6d3d68b..776f033 100644
--- a/src/__SolutionItems/CommonAssemblyInfo.cs
+++ b/src/__SolutionItems/CommonAssemblyInfo.cs
@@ -3,7 +3,7 @@
[assembly: AssemblyProduct("GenericQueryable")]
[assembly: AssemblyCompany("IvAt")]
-[assembly: AssemblyVersion("2.0.6.0")]
+[assembly: AssemblyVersion("2.1.4.0")]
[assembly: AssemblyInformationalVersion("changes at build")]
#if DEBUG