diff --git a/Docs/IoC_net40.md b/Docs/IoC_net40.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_net40.md
+++ b/Docs/IoC_net40.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_net40.xml b/Docs/IoC_net40.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_net40.xml
+++ b/Docs/IoC_net40.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_net48.md b/Docs/IoC_net48.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_net48.md
+++ b/Docs/IoC_net48.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_net48.xml b/Docs/IoC_net48.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_net48.xml
+++ b/Docs/IoC_net48.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_net5.0.md b/Docs/IoC_net5.0.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_net5.0.md
+++ b/Docs/IoC_net5.0.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_net5.0.xml b/Docs/IoC_net5.0.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_net5.0.xml
+++ b/Docs/IoC_net5.0.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_netcoreapp1.0.md b/Docs/IoC_netcoreapp1.0.md
index 90d62275..12e2a688 100644
--- a/Docs/IoC_netcoreapp1.0.md
+++ b/Docs/IoC_netcoreapp1.0.md
@@ -335,6 +335,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8089,6 +8090,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_netcoreapp1.0.xml b/Docs/IoC_netcoreapp1.0.xml
index 51a1a395..82870155 100644
--- a/Docs/IoC_netcoreapp1.0.xml
+++ b/Docs/IoC_netcoreapp1.0.xml
@@ -5584,6 +5584,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_netcoreapp2.0.md b/Docs/IoC_netcoreapp2.0.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_netcoreapp2.0.md
+++ b/Docs/IoC_netcoreapp2.0.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_netcoreapp2.0.xml b/Docs/IoC_netcoreapp2.0.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_netcoreapp2.0.xml
+++ b/Docs/IoC_netcoreapp2.0.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_netcoreapp3.1.md b/Docs/IoC_netcoreapp3.1.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_netcoreapp3.1.md
+++ b/Docs/IoC_netcoreapp3.1.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_netcoreapp3.1.xml b/Docs/IoC_netcoreapp3.1.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_netcoreapp3.1.xml
+++ b/Docs/IoC_netcoreapp3.1.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_netstandard1.0.md b/Docs/IoC_netstandard1.0.md
index 90d62275..12e2a688 100644
--- a/Docs/IoC_netstandard1.0.md
+++ b/Docs/IoC_netstandard1.0.md
@@ -335,6 +335,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8089,6 +8090,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_netstandard1.0.xml b/Docs/IoC_netstandard1.0.xml
index 51a1a395..82870155 100644
--- a/Docs/IoC_netstandard1.0.xml
+++ b/Docs/IoC_netstandard1.0.xml
@@ -5584,6 +5584,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/Docs/IoC_netstandard2.1.md b/Docs/IoC_netstandard2.1.md
index df53f62d..8f203a69 100644
--- a/Docs/IoC_netstandard2.1.md
+++ b/Docs/IoC_netstandard2.1.md
@@ -337,6 +337,7 @@
- [ContainerParameter](#P-IoC-IBuildContext-ContainerParameter 'IoC.IBuildContext.ContainerParameter')
- [Depth](#P-IoC-IBuildContext-Depth 'IoC.IBuildContext.Depth')
- [Key](#P-IoC-IBuildContext-Key 'IoC.IBuildContext.Key')
+ - [Parent](#P-IoC-IBuildContext-Parent 'IoC.IBuildContext.Parent')
- [AddParameter(parameterExpression)](#M-IoC-IBuildContext-AddParameter-System-Linq-Expressions-ParameterExpression- 'IoC.IBuildContext.AddParameter(System.Linq.Expressions.ParameterExpression)')
- [CreateChild(key,container)](#M-IoC-IBuildContext-CreateChild-IoC-Key,IoC-IContainer- 'IoC.IBuildContext.CreateChild(IoC.Key,IoC.IContainer)')
- [CreateExpression(defaultExpression)](#M-IoC-IBuildContext-CreateExpression-System-Linq-Expressions-Expression- 'IoC.IBuildContext.CreateExpression(System.Linq.Expressions.Expression)')
@@ -8125,6 +8126,13 @@ The depth of current context in the build tree.
The target key to build resolver.
+
+### Parent `property`
+
+##### Summary
+
+Provides a parent context or `null`.
+
### AddParameter(parameterExpression) `method`
diff --git a/Docs/IoC_netstandard2.1.xml b/Docs/IoC_netstandard2.1.xml
index a94e4f19..12c61e4a 100644
--- a/Docs/IoC_netstandard2.1.xml
+++ b/Docs/IoC_netstandard2.1.xml
@@ -5598,6 +5598,11 @@
Represents an abstract build context.
+
+
+ Provides a parent context or null.
+
+
The target key to build resolver.
diff --git a/IoC.Source/IoC.cs b/IoC.Source/IoC.cs
index 27b03131..21d23d77 100644
--- a/IoC.Source/IoC.cs
+++ b/IoC.Source/IoC.cs
@@ -8131,6 +8131,11 @@ namespace IoC
[PublicAPI]
public interface IBuildContext
{
+ ///
+ /// Provides a parent context or null.
+ ///
+ [CanBeNull] IBuildContext Parent { get; }
+
///
/// The target key to build resolver.
///
@@ -9353,6 +9358,7 @@ namespace IoC.Features
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
+ using System.Reflection;
using Core;
using Lifetimes;
using static Core.FluentRegister;
@@ -9363,6 +9369,8 @@ namespace IoC.Features
[PublicAPI]
public sealed class FuncFeature : IConfiguration
{
+ [NotNull] private static readonly MethodInfo ResolveWithTagGenericMethodInfo = ((MethodCallExpression)((Expression>)(() => Resolve