diff --git a/Solid.Bootstrapping.Specs/Solid.Bootstrapping.Specs.csproj b/Solid.Bootstrapping.Specs/Solid.Bootstrapping.Specs.csproj
index 9d8c297e..fa046d87 100644
--- a/Solid.Bootstrapping.Specs/Solid.Bootstrapping.Specs.csproj
+++ b/Solid.Bootstrapping.Specs/Solid.Bootstrapping.Specs.csproj
@@ -4,12 +4,12 @@
false
-
+
-
+
diff --git a/Solid.Bootstrapping/Middleware.cs b/Solid.Bootstrapping/Middleware.cs
index 0785940d..8c7148e1 100644
--- a/Solid.Bootstrapping/Middleware.cs
+++ b/Solid.Bootstrapping/Middleware.cs
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using Solid.IoC.Registration;
using Solid.Practices.Composition.Contracts;
using Solid.Practices.IoC;
using Solid.Practices.Middleware;
@@ -179,7 +180,7 @@ public TBootstrapper Apply(
/// specified dependency registrator middleware.
///
/// The type of the bootstrapper.
- ///
+ ///
public class UseDependencyRegistratorMiddleware : IMiddleware
where TBootstrapper : class, IHaveRegistrator
{
@@ -202,4 +203,21 @@ public TBootstrapper Apply(
return @object;
}
}
+
+ ///
+ /// Adds support for default registration method for .
+ /// The default lifetime is singleton.
+ ///
+ ///
+ public class UseDefaultRegistrationMethodMiddleware : IMiddleware
+ where TBootstrapper : class, IHaveRegistrator
+ {
+ ///
+ public TBootstrapper Apply(TBootstrapper @object)
+ {
+ RegistrationMethodContext.SetDefaultRegistrationMethod((dr, match) =>
+ dr.AddSingleton(match.ServiceType, match.ImplementationType));
+ return @object;
+ }
+ }
}
diff --git a/Solid.Bootstrapping/Solid.Bootstrapping.csproj b/Solid.Bootstrapping/Solid.Bootstrapping.csproj
index de0d2b5b..b879d025 100644
--- a/Solid.Bootstrapping/Solid.Bootstrapping.csproj
+++ b/Solid.Bootstrapping/Solid.Bootstrapping.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
@@ -12,6 +12,7 @@
+
diff --git a/Solid.Common.Platform/net/Solid.Common.NET.csproj b/Solid.Common.Platform/net/Solid.Common.NET.csproj
index 6de5c5d5..b5318b56 100644
--- a/Solid.Common.Platform/net/Solid.Common.NET.csproj
+++ b/Solid.Common.Platform/net/Solid.Common.NET.csproj
@@ -2,7 +2,7 @@
net5.0
false
- 2.3.1
+ 2.3.2
Solid.Common.Platform
Solid.Common
diff --git a/Solid.Common.Platform/netcore/Solid.Common.NETCore.csproj b/Solid.Common.Platform/netcore/Solid.Common.NETCore.csproj
index 65fbab35..ba182099 100644
--- a/Solid.Common.Platform/netcore/Solid.Common.NETCore.csproj
+++ b/Solid.Common.Platform/netcore/Solid.Common.NETCore.csproj
@@ -2,7 +2,7 @@
netcoreapp3.1
false
- 2.3.1
+ 2.3.2
Solid.Common.Platform
Solid.Common
diff --git a/Solid.Common.Platform/netframework/Properties/AssemblyInfo.cs b/Solid.Common.Platform/netframework/Properties/AssemblyInfo.cs
index b74f2327..d458c390 100644
--- a/Solid.Common.Platform/netframework/Properties/AssemblyInfo.cs
+++ b/Solid.Common.Platform/netframework/Properties/AssemblyInfo.cs
@@ -28,5 +28,5 @@
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.3.1")]
-[assembly: AssemblyFileVersion("2.3.1")]
+[assembly: AssemblyVersion("2.3.2")]
+[assembly: AssemblyFileVersion("2.3.2")]
diff --git a/Solid.Common.Platform/uwp/Properties/AssemblyInfo.cs b/Solid.Common.Platform/uwp/Properties/AssemblyInfo.cs
index f93666c9..3599439c 100644
--- a/Solid.Common.Platform/uwp/Properties/AssemblyInfo.cs
+++ b/Solid.Common.Platform/uwp/Properties/AssemblyInfo.cs
@@ -20,6 +20,6 @@
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.3.1")]
-[assembly: AssemblyFileVersion("2.3.1")]
+[assembly: AssemblyVersion("2.3.2")]
+[assembly: AssemblyFileVersion("2.3.2")]
[assembly: ComVisible(false)]
diff --git a/Solid.Common/Solid.Common.csproj b/Solid.Common/Solid.Common.csproj
index e2acb759..81d9fbb4 100644
--- a/Solid.Common/Solid.Common.csproj
+++ b/Solid.Common/Solid.Common.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Core.Tests/Solid.Core.Tests.csproj b/Solid.Core.Tests/Solid.Core.Tests.csproj
index 90244da1..f5026da7 100644
--- a/Solid.Core.Tests/Solid.Core.Tests.csproj
+++ b/Solid.Core.Tests/Solid.Core.Tests.csproj
@@ -5,7 +5,7 @@
false
-
+
diff --git a/Solid.Core/Solid.Core.csproj b/Solid.Core/Solid.Core.csproj
index a5643b75..f9bcd17f 100644
--- a/Solid.Core/Solid.Core.csproj
+++ b/Solid.Core/Solid.Core.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Extensibility.Specs/Solid.Extensibility.Specs.csproj b/Solid.Extensibility.Specs/Solid.Extensibility.Specs.csproj
index 65171836..797c19d4 100644
--- a/Solid.Extensibility.Specs/Solid.Extensibility.Specs.csproj
+++ b/Solid.Extensibility.Specs/Solid.Extensibility.Specs.csproj
@@ -1,16 +1,16 @@
-
+
net5.0
false
false
-
+
-
+
@@ -23,28 +23,10 @@
-
-
-
- True
-
-
- True
-
-
+
Always
-
-
-
- SpecFlowSingleFileGenerator
- Middleware Types.feature.cs
-
-
- SpecFlowSingleFileGenerator
- Using extensibility by type as Aspect.feature.cs
-
-
+
\ No newline at end of file
diff --git a/Solid.Extensibility/Solid.Extensibility.csproj b/Solid.Extensibility/Solid.Extensibility.csproj
index 498db44d..318097f8 100644
--- a/Solid.Extensibility/Solid.Extensibility.csproj
+++ b/Solid.Extensibility/Solid.Extensibility.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.IoC.Adapters.BoDi.Specs/Solid - Backup.IoC.Adapters.BoDi.Specs.csproj b/Solid.IoC.Adapters.BoDi.Specs/Solid - Backup.IoC.Adapters.BoDi.Specs.csproj
deleted file mode 100644
index 4ccb1c1e..00000000
--- a/Solid.IoC.Adapters.BoDi.Specs/Solid - Backup.IoC.Adapters.BoDi.Specs.csproj
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- net5.0
- false
- false
-
-
-
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers
-
-
-
-
-
-
-
-
- Always
-
-
-
\ No newline at end of file
diff --git a/Solid.IoC.Adapters.BoDi.Specs/Solid.IoC.Adapters.BoDi.Specs.csproj b/Solid.IoC.Adapters.BoDi.Specs/Solid.IoC.Adapters.BoDi.Specs.csproj
index 4ccb1c1e..441950ba 100644
--- a/Solid.IoC.Adapters.BoDi.Specs/Solid.IoC.Adapters.BoDi.Specs.csproj
+++ b/Solid.IoC.Adapters.BoDi.Specs/Solid.IoC.Adapters.BoDi.Specs.csproj
@@ -1,15 +1,15 @@
-
+
net5.0
false
false
-
+
-
+
diff --git a/Solid.IoC.Adapters.BoDi/Solid.IoC.Adapters.BoDi.csproj b/Solid.IoC.Adapters.BoDi/Solid.IoC.Adapters.BoDi.csproj
index c3003112..81766926 100644
--- a/Solid.IoC.Adapters.BoDi/Solid.IoC.Adapters.BoDi.csproj
+++ b/Solid.IoC.Adapters.BoDi/Solid.IoC.Adapters.BoDi.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.IoC.Registration.Specs.Tests.Contracts/IDependency.cs b/Solid.IoC.Registration.Specs.Tests.Contracts/IDependency.cs
new file mode 100644
index 00000000..67c1f273
--- /dev/null
+++ b/Solid.IoC.Registration.Specs.Tests.Contracts/IDependency.cs
@@ -0,0 +1,7 @@
+namespace Solid.IoC.Registration.Specs.Tests.Contracts
+{
+ public interface IDependency
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs.Tests.Contracts/ObjectBase.cs b/Solid.IoC.Registration.Specs.Tests.Contracts/ObjectBase.cs
new file mode 100644
index 00000000..22540d42
--- /dev/null
+++ b/Solid.IoC.Registration.Specs.Tests.Contracts/ObjectBase.cs
@@ -0,0 +1,7 @@
+namespace Solid.IoC.Registration.Specs.Tests.Contracts
+{
+ public abstract class ObjectBase
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs.Tests.Implementations/Dependency.cs b/Solid.IoC.Registration.Specs.Tests.Implementations/Dependency.cs
new file mode 100644
index 00000000..994691b9
--- /dev/null
+++ b/Solid.IoC.Registration.Specs.Tests.Implementations/Dependency.cs
@@ -0,0 +1,9 @@
+using Solid.IoC.Registration.Specs.Tests.Contracts;
+
+namespace Solid.IoC.Registration.Specs.Tests.Implementations
+{
+ public class Dependency : IDependency
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/Automagical Registration.feature b/Solid.IoC.Registration.Specs/Automagical Registration.feature
index 79dcc1d3..613950bd 100644
--- a/Solid.IoC.Registration.Specs/Automagical Registration.feature
+++ b/Solid.IoC.Registration.Specs/Automagical Registration.feature
@@ -1,22 +1,45 @@
-Feature: Automagical Registration
+@cleanRegistrationMethodContext
+Feature: Automagical Registration
In order to simplify IoC implementation in my apps
As an app developer
I want to be able to register dependencies automagically
-Scenario: Registering dependencies automagically by ending should allow successful resolution
+Scenario Outline: Registering dependencies automagically by ending should allow successful resolution
Given There are valid implementations for all declared dependencies
- When I use object container
+ When I use ''
When I use registration by ending
- Then All dependencies can be resolved successfully
+ Then All dependencies by ending can be resolved successfully
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
-Scenario: Registering dependencies automagically by contract which is an interface should allow successful resolution
+Scenario Outline: Registering dependencies automagically by contract which is an interface should allow successful resolution
Given There are valid implementations for all declared dependencies
- When I use object container
+ When I use ''
When I use registration by contract which is an interface
- Then All dependencies can be resolved successfully
+ Then All dependencies by contract which is an interface can be resolved successfully
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
-Scenario: Registering dependencies automagically by contract which is a class should allow successful resolution
+Scenario Outline: Registering dependencies automagically by contract which is a class should allow successful resolution
Given There are valid implementations for all declared dependencies
- When I use object container
+ When I use ''
When I use registration by contract which is a class
- Then All dependencies can be resolved successfully
\ No newline at end of file
+ Then All dependencies by contract which is a class can be resolved successfully
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
+
+Scenario Outline: Registering all dependencies automagically with implicit default registration method should allow successful resolution for all dependencies
+ Given There are valid implementations for all declared dependencies
+ When I use '' with default registration method
+ When I use automagical registration
+ Then All dependencies can be resolved successfully
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/AutomagicalRegistrationScenarioDataStore.cs b/Solid.IoC.Registration.Specs/AutomagicalRegistrationScenarioDataStore.cs
index 612f4723..0cc8b811 100644
--- a/Solid.IoC.Registration.Specs/AutomagicalRegistrationScenarioDataStore.cs
+++ b/Solid.IoC.Registration.Specs/AutomagicalRegistrationScenarioDataStore.cs
@@ -1,5 +1,6 @@
using System.Reflection;
using Attest.Testing.SpecFlow;
+using Microsoft.Extensions.DependencyInjection;
using Solid.Practices.IoC;
using TechTalk.SpecFlow;
@@ -17,10 +18,34 @@ public Assembly[] Assemblies
set => SetValue(value);
}
+ public Assembly ContractsAssembly
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
+
+ public Assembly ImplementationsAssembly
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
+
public IIocContainer IocContainer
{
get => GetValue();
set => SetValue(value);
}
+
+ public IServiceCollection DiContainer
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
+
+ public string ContainerName
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
}
}
diff --git a/Solid.IoC.Registration.Specs/AutomagicalRegistrationSteps.cs b/Solid.IoC.Registration.Specs/AutomagicalRegistrationSteps.cs
index 1948141e..921861db 100644
--- a/Solid.IoC.Registration.Specs/AutomagicalRegistrationSteps.cs
+++ b/Solid.IoC.Registration.Specs/AutomagicalRegistrationSteps.cs
@@ -1,10 +1,11 @@
-using System.Linq;
-using System.Reflection;
+using System.Reflection;
using BoDi;
using FluentAssertions;
+using Microsoft.Extensions.DependencyInjection;
using Solid.IoC.Adapters.BoDi;
using Solid.IoC.Registration.Specs.Tests.Contracts;
using Solid.IoC.Registration.Specs.Tests.Implementations;
+using Solid.Practices.IoC;
using TechTalk.SpecFlow;
namespace Solid.IoC.Registration.Specs
@@ -12,7 +13,6 @@ namespace Solid.IoC.Registration.Specs
[Binding]
internal class AutomagicalRegistrationSteps
{
- private string[] _assembliesNames;
private readonly AutomagicalRegistrationScenarioDataStore _scenarioDataStore;
public AutomagicalRegistrationSteps(ScenarioContext scenarioContext)
@@ -23,49 +23,171 @@ public AutomagicalRegistrationSteps(ScenarioContext scenarioContext)
[Given(@"There are valid implementations for all declared dependencies")]
public void GivenThereAreValidImplementationsForAllDeclaredDependencies()
{
- _assembliesNames = new[]
+ var contractsAssemblyName = "Solid.IoC.Registration.Specs.Tests.Contracts.dll";
+ var implementationsAssemblyName = "Solid.IoC.Registration.Specs.Tests.Implementations.dll";
+ var contractsAssembly = Assembly.LoadFrom(contractsAssemblyName);
+ var implementationsAssembly = Assembly.LoadFrom(implementationsAssemblyName);
+ _scenarioDataStore.ContractsAssembly = contractsAssembly;
+ _scenarioDataStore.ImplementationsAssembly = implementationsAssembly;
+ _scenarioDataStore.Assemblies = new[] {contractsAssembly, implementationsAssembly};
+ }
+
+ [When(@"I use '(.*)'")]
+ public void WhenIUse(string containerName)
+ {
+ _scenarioDataStore.ContainerName = containerName;
+ switch (containerName)
{
- "Solid.IoC.Registration.Specs.Tests.Contracts.dll",
- "Solid.IoC.Registration.Specs.Tests.Implementations.dll"
- };
- _scenarioDataStore.Assemblies = _assembliesNames.Select(Assembly.LoadFrom).ToArray();
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer = new ObjectContainerAdapter(new ObjectContainer());
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer = new ServiceCollection();
+ break;
+ }
}
- [When(@"I use object container")]
- public void WhenIUseObjectContainer()
+ [When(@"I use '(.*)' with default registration method")]
+ public void WhenIUseWithDefaultRegistrationMethod(string containerName)
{
- _scenarioDataStore.IocContainer = new ObjectContainerAdapter(new ObjectContainer());
+ _scenarioDataStore.ContainerName = containerName;
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer = new ObjectContainerAdapter(new ObjectContainer());
+ RegistrationMethodContext.SetDefaultRegistrationMethod((dr, match) =>
+ dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer = new ServiceCollection();
+ RegistrationMethodContext.SetDefaultRegistrationMethod((dr, match) =>
+ dr.AddSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ }
}
[When(@"I use registration by ending")]
public void WhenIUseRegistrationByEnding()
{
- _scenarioDataStore.IocContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
- a => a.FindTypesByEnding("ScenarioDataStore"),
- (dr, match) => dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ switch (_scenarioDataStore.ContainerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByEnding("ScenarioDataStore"),
+ (dr, match) => dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByEnding("ScenarioDataStore"),
+ (dr, match) => dr.AddSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ }
}
[When(@"I use registration by contract which is an interface")]
public void WhenIUseRegistrationByContractWhichIsAnInterface()
{
- _scenarioDataStore.IocContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
- a => a.FindTypesByContract(typeof(IScenarioDataStore)),
- (dr, match) => dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ switch (_scenarioDataStore.ContainerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByContract(typeof(IScenarioDataStore)),
+ (dr, match) => dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByContract(typeof(IScenarioDataStore)),
+ (dr, match) => dr.AddSingleton(match.ServiceType, match.ImplementationType));
+ break;
+ }
}
[When(@"I use registration by contract which is a class")]
public void WhenIUseRegistrationByContractWhichIsAClass()
{
- _scenarioDataStore.IocContainer.RegisterImplementationsAsContracts(_scenarioDataStore.Assemblies,
- a => a.FindTypesByContract(typeof(ObjectBase)),
- (dr, match) => dr.RegisterSingleton(match.ServiceType, match.ImplementationType));
+ switch (_scenarioDataStore.ContainerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer.RegisterImplementations(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByContract(typeof(ObjectBase)),
+ (dr, match) => dr.RegisterSingleton(match, match));
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer.RegisterImplementations(_scenarioDataStore.Assemblies,
+ a => a.FindTypesByContract(typeof(ObjectBase)),
+ (dr, match) => dr.AddSingleton(match));
+ break;
+ }
+ }
+
+ [When(@"I use automagical registration")]
+ public void WhenIUseAutomagicalRegistration()
+ {
+ switch (_scenarioDataStore.ContainerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ _scenarioDataStore.IocContainer.RegisterAutomagically(_scenarioDataStore.ContractsAssembly,
+ _scenarioDataStore.ImplementationsAssembly);
+ break;
+ case Consts.MicrosoftDiContainerName:
+ _scenarioDataStore.DiContainer.RegisterAutomagically(_scenarioDataStore.ContractsAssembly,
+ _scenarioDataStore.ImplementationsAssembly);
+ break;
+ }
+ }
+
+ [Then(@"All dependencies by ending can be resolved successfully")]
+ public void ThenAllDependenciesByEndingCanBeResolvedSuccessfully()
+ {
+ ScenarioDataStoreShouldBeResolvedSuccessfullyByInterface();
+ }
+
+ [Then(@"All dependencies by contract which is an interface can be resolved successfully")]
+ public void ThenAllDependenciesByContractWhichIsAnInterfaceCanBeResolvedSuccessfully()
+ {
+ ScenarioDataStoreShouldBeResolvedSuccessfullyByInterface();
+ }
+
+ [Then(@"All dependencies by contract which is a class can be resolved successfully")]
+ public void ThenAllDependenciesByContractWhichIsAClassCanBeResolvedSuccessfully()
+ {
+ ScenarioDataStoreShouldBeResolvedSuccessfullyByClass();
}
[Then(@"All dependencies can be resolved successfully")]
public void ThenAllDependenciesCanBeResolvedSuccessfully()
{
- var scenarioDataStore = _scenarioDataStore.IocContainer.Resolve(typeof(IScenarioDataStore));
+ ScenarioDataStoreShouldBeResolvedSuccessfullyByInterface();
+ var dependency = ResolveDependency();
+ dependency.Should().BeOfType();
+ }
+
+ private void ScenarioDataStoreShouldBeResolvedSuccessfullyByInterface()
+ {
+ var scenarioDataStore = ResolveDependency();
+ scenarioDataStore.Should().BeOfType();
+ }
+
+ private void ScenarioDataStoreShouldBeResolvedSuccessfullyByClass()
+ {
+ var scenarioDataStore = ResolveDependency();
scenarioDataStore.Should().BeOfType();
}
+
+ private TDependency ResolveDependency() where TDependency : class
+ {
+ TDependency dependency = default;
+ switch (_scenarioDataStore.ContainerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ dependency = _scenarioDataStore.IocContainer.Resolve();
+ break;
+ case Consts.MicrosoftDiContainerName:
+ dependency = _scenarioDataStore.DiContainer.BuildServiceProvider().GetService();
+ break;
+ }
+
+ return dependency;
+ }
}
}
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/CleanRegistrationMethodContextHook.cs b/Solid.IoC.Registration.Specs/CleanRegistrationMethodContextHook.cs
new file mode 100644
index 00000000..4848d261
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/CleanRegistrationMethodContextHook.cs
@@ -0,0 +1,14 @@
+using TechTalk.SpecFlow;
+
+namespace Solid.IoC.Registration.Specs
+{
+ [Binding]
+ public sealed class CleanRegistrationMethodContextHook
+ {
+ [AfterScenario("cleanRegistrationMethodContext")]
+ public void AfterScenario()
+ {
+ RegistrationMethodContext.ClearRegistrations();
+ }
+ }
+}
diff --git a/Solid.IoC.Registration.Specs/Consts.cs b/Solid.IoC.Registration.Specs/Consts.cs
new file mode 100644
index 00000000..c2a068ff
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/Consts.cs
@@ -0,0 +1,8 @@
+namespace Solid.IoC.Registration.Specs
+{
+ internal static class Consts
+ {
+ internal const string SpecFlowObjectContainerName = "specflow object container";
+ internal const string MicrosoftDiContainerName = "microsoft di container";
+ }
+}
diff --git a/Solid.IoC.Registration.Specs/Registration Method Context.feature b/Solid.IoC.Registration.Specs/Registration Method Context.feature
new file mode 100644
index 00000000..234bb752
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/Registration Method Context.feature
@@ -0,0 +1,43 @@
+@cleanRegistrationMethodContext
+Feature: Registration Method Context
+ In order to simplify IoC implementation in my apps
+ As an app developer
+ I want to be able to manage default registration method per specific IoC container
+
+#TODO: Think about running in parallel
+Scenario: Setting default registration method for the specific IoC container should be successful
+ When I use '' with default registration method
+ Then The default registration method for '' is set
+ And There are no errors
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
+
+Scenario: Getting default registration method for the specific IoC container after setting it should be successful
+ When I use '' with default registration method
+ Then The default registration method for '' is set
+ And There are no errors
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
+
+Scenario: Setting default registration method for the specific IoC container more than once should be successful
+ When I use '' with default registration method
+ And I set default registration method for ''
+ Then The default registration method for '' is overridden
+ And There are no errors
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
+
+Scenario Outline: Getting default registration method for the specific IoC container without setting it should result in error
+ When I use ''
+ And I get default registration method for ''
+ Then The correspondent error with details for get default registration method for '' is thrown
+Examples:
+ | container name |
+ | specflow object container |
+ | microsoft di container |
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/RegistrationMethodContextScenarioDataStore.cs b/Solid.IoC.Registration.Specs/RegistrationMethodContextScenarioDataStore.cs
new file mode 100644
index 00000000..ae50a29c
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/RegistrationMethodContextScenarioDataStore.cs
@@ -0,0 +1,26 @@
+using System;
+using Attest.Testing.SpecFlow;
+using TechTalk.SpecFlow;
+
+namespace Solid.IoC.Registration.Specs
+{
+ internal sealed class RegistrationMethodContextScenarioDataStore : ScenarioDataStoreBase
+ {
+ public RegistrationMethodContextScenarioDataStore(ScenarioContext scenarioContext)
+ : base(scenarioContext)
+ {
+ }
+
+ public Delegate LastDefaultRegistrationMethod
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
+
+ public Exception LastError
+ {
+ get => GetValue();
+ set => SetValue(value);
+ }
+ }
+}
diff --git a/Solid.IoC.Registration.Specs/RegistrationMethodContextSteps.cs b/Solid.IoC.Registration.Specs/RegistrationMethodContextSteps.cs
new file mode 100644
index 00000000..b734d57c
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/RegistrationMethodContextSteps.cs
@@ -0,0 +1,115 @@
+using System;
+using FluentAssertions;
+using Microsoft.Extensions.DependencyInjection;
+using Solid.Practices.IoC;
+using TechTalk.SpecFlow;
+using Xunit;
+
+namespace Solid.IoC.Registration.Specs
+{
+ [Binding]
+ internal sealed class RegistrationMethodContextSteps
+ {
+ private readonly RegistrationMethodContextScenarioDataStore _scenarioDataStore;
+
+ public RegistrationMethodContextSteps(ScenarioContext scenarioContext)
+ {
+ _scenarioDataStore = new RegistrationMethodContextScenarioDataStore(scenarioContext);
+ }
+
+ [When(@"I get default registration method for '(.*)'")]
+ public void WhenIGetDefaultRegistrationMethodFor(string containerName)
+ {
+ Exception error = default;
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ error = Record.Exception(RegistrationMethodContext.GetDefaultRegistrationMethod);
+ break;
+ case Consts.MicrosoftDiContainerName:
+ error = Record.Exception(RegistrationMethodContext
+ .GetDefaultRegistrationMethod);
+ break;
+ }
+ _scenarioDataStore.LastError = error;
+ }
+
+ [When(@"I set default registration method for '(.*)'")]
+ public void WhenISetDefaultRegistrationMethodFor(string containerName)
+ {
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ Action defaultIocContainerRegistrationMethod = (container, match) => { };
+ _scenarioDataStore.LastDefaultRegistrationMethod = defaultIocContainerRegistrationMethod;
+ RegistrationMethodContext.SetDefaultRegistrationMethod(defaultIocContainerRegistrationMethod);
+ break;
+ case Consts.MicrosoftDiContainerName:
+ Action defaultServiceCollectionRegistrationMethod = (container, match) => { };
+ _scenarioDataStore.LastDefaultRegistrationMethod = defaultServiceCollectionRegistrationMethod;
+ RegistrationMethodContext.SetDefaultRegistrationMethod(defaultServiceCollectionRegistrationMethod);
+ break;
+ }
+ }
+
+ [Then(@"The default registration method for '(.*)' is set")]
+ public void ThenTheDefaultRegistrationMethodForIsSet(string containerName)
+ {
+ Delegate defaultRegistrationMethod = default;
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ defaultRegistrationMethod = RegistrationMethodContext.GetDefaultRegistrationMethod();
+ break;
+ case Consts.MicrosoftDiContainerName:
+ defaultRegistrationMethod =
+ RegistrationMethodContext.GetDefaultRegistrationMethod();
+ break;
+ }
+
+ defaultRegistrationMethod.Should().NotBeNull();
+ }
+
+ [Then(@"The default registration method for '(.*)' is overridden")]
+ public void ThenTheDefaultRegistrationMethodForIsOverridden(string containerName)
+ {
+ Delegate defaultRegistrationMethod = default;
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ defaultRegistrationMethod = RegistrationMethodContext.GetDefaultRegistrationMethod();
+ break;
+ case Consts.MicrosoftDiContainerName:
+ defaultRegistrationMethod =
+ RegistrationMethodContext.GetDefaultRegistrationMethod();
+ break;
+ }
+ defaultRegistrationMethod.Should().BeSameAs(_scenarioDataStore.LastDefaultRegistrationMethod);
+ }
+
+ [Then(@"There are no errors")]
+ public void ThenThereAreNoErrors()
+ {
+ var lastError = _scenarioDataStore.LastError;
+ lastError.Should().BeNull();
+ }
+
+ [Then(@"The correspondent error with details for get default registration method for '(.*)' is thrown")]
+ public void ThenTheCorrespondentErrorWithDetailsForGetDefaultRegistrationMethodForIsThrown(string containerName)
+ {
+ string containerType = default;
+ switch (containerName)
+ {
+ case Consts.SpecFlowObjectContainerName:
+ containerType = "IIocContainer";
+ break;
+ case Consts.MicrosoftDiContainerName:
+ containerType = "IServiceCollection";
+ break;
+ }
+ var lastError = _scenarioDataStore.LastError;
+ lastError.Should().BeOfType()
+ .Which.Message.Should().Be($"Missing default registration method for {containerType}");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/Solid.IoC.Registration.Specs.csproj b/Solid.IoC.Registration.Specs/Solid.IoC.Registration.Specs.csproj
index 89fe0ba2..7135741e 100644
--- a/Solid.IoC.Registration.Specs/Solid.IoC.Registration.Specs.csproj
+++ b/Solid.IoC.Registration.Specs/Solid.IoC.Registration.Specs.csproj
@@ -1,34 +1,33 @@
-
net5.0
false
false
-
-
+
+
-
+
-
-
+
-
Always
-
-
-
+
+ Always
+
+
+
\ No newline at end of file
diff --git a/Solid.IoC.Registration.Specs/xunit.runner.json b/Solid.IoC.Registration.Specs/xunit.runner.json
new file mode 100644
index 00000000..f5cdb055
--- /dev/null
+++ b/Solid.IoC.Registration.Specs/xunit.runner.json
@@ -0,0 +1,3 @@
+{
+ "parallelizeTestCollections": false
+}
diff --git a/Solid.IoC.Registration/DependencyRegistratorExtensions.cs b/Solid.IoC.Registration/DependencyRegistratorExtensions.cs
index 8c4c5cb5..cc10caa9 100644
--- a/Solid.IoC.Registration/DependencyRegistratorExtensions.cs
+++ b/Solid.IoC.Registration/DependencyRegistratorExtensions.cs
@@ -11,7 +11,7 @@ namespace Solid.IoC.Registration
public static class DependencyRegistratorExtensions
{
///
- /// Registers matching dependencies in an auto-magical fashion.
+ /// Registers matching dependencies by their contracts in an auto-magical fashion.
///
/// The type of the dependency registrator.
/// The dependency registrator.
@@ -37,6 +37,32 @@ public static TDependencyRegistrator RegisterImplementationsAsContracts
+ /// Registers matching dependencies as themselves in an auto-magical fashion.
+ ///
+ /// The type of the dependency registrator.
+ /// The dependency registrator.
+ /// The list of assemblies to be inspected for dependency matches.
+ /// The strategy for extracting types from the list of assemblies.
+ /// The way of registering matching dependencies into the provided registrator.
+ ///
+ public static TDependencyRegistrator RegisterImplementations(
+ this TDependencyRegistrator dependencyRegistrator,
+ IEnumerable assemblies,
+ Func, Type[]> typeExtractionMethod,
+ Action registrationMethod)
+ {
+ var assembliesArray = assemblies as Assembly[] ?? assemblies.ToArray();
+ var matches = typeExtractionMethod(assembliesArray).Where(t => t.IsClass);
+
+ foreach (var match in matches)
+ {
+ registrationMethod(dependencyRegistrator, match);
+ }
+
+ return dependencyRegistrator;
+ }
+
private static TypeMatch BuildMatch(Type implementationCandidate)
{
var match = FindContractMatch(implementationCandidate);
@@ -53,5 +79,45 @@ private static Type FindContractMatch(Type implementationCandidate)
.GetImplementedInterfaces()
.FirstOrDefault(t => t.Name == contractName);
}
+
+ ///
+ /// Registers types as their abstractions using provided registration method
+ /// The assemblies are inspected using [IDependency]--[Dependency] naming convention
+ ///
+ /// The dependency registrator.
+ /// The assembly which contains the contracts/abstractions.
+ /// The assembly which contains the implementations.
+ /// The registration method.
+ ///
+ public static TDependencyRegistrator RegisterAutomagically(
+ this TDependencyRegistrator dependencyRegistrator,
+ Assembly contractsAssembly,
+ Assembly implementationsAssembly,
+ Action registrationMethod = null)
+ {
+ registrationMethod = registrationMethod ?? RegistrationMethodContext.GetDefaultRegistrationMethod();
+ var contracts = contractsAssembly.DefinedTypes
+ .Where(t => t.IsInterface)
+ .Select(t => t.AsType())
+ .ToArray();
+ var implementations =
+ implementationsAssembly.DefinedTypes
+ .Where(t => t.IsInterface == false)
+ .ToArray();
+ var contractsInfo = contracts.ToDictionary(t => t.Name, t => t);
+ var implementationsInfo = implementations
+ .Where(t => t.Name.StartsWith("<>") == false)
+ .ToDictionary(t => t.Name, t => t);
+ foreach (var implementationInfo in implementationsInfo)
+ {
+ contractsInfo.TryGetValue("I" + implementationInfo.Key, out Type match);
+ if (match != null)
+ {
+ registrationMethod.Invoke(dependencyRegistrator,
+ new TypeMatch(match, implementationInfo.Value.AsType()));
+ }
+ }
+ return dependencyRegistrator;
+ }
}
}
diff --git a/Solid.IoC.Registration/MissingDefaultRegistrationMethodException.cs b/Solid.IoC.Registration/MissingDefaultRegistrationMethodException.cs
new file mode 100644
index 00000000..acd1620a
--- /dev/null
+++ b/Solid.IoC.Registration/MissingDefaultRegistrationMethodException.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace Solid.IoC.Registration
+{
+ ///
+ /// Represents an exception that is thrown when no default registration method is found.
+ ///
+ public sealed class MissingDefaultRegistrationMethodException : Exception
+ {
+ ///
+ /// Creates a new instance of
+ ///
+ /// The dependency registrator type.
+ public MissingDefaultRegistrationMethodException(Type dependencyRegistratorType)
+ :base($"Missing default registration method for {dependencyRegistratorType.Name}")
+ {
+
+ }
+ }
+}
diff --git a/Solid.IoC.Registration/RegistrationMethodContext.cs b/Solid.IoC.Registration/RegistrationMethodContext.cs
new file mode 100644
index 00000000..f02837a3
--- /dev/null
+++ b/Solid.IoC.Registration/RegistrationMethodContext.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+
+namespace Solid.IoC.Registration
+{
+ ///
+ /// Represents container for default registration methods.
+ ///
+ public static class RegistrationMethodContext
+ {
+ private static readonly Dictionary Storage =
+ new Dictionary();
+
+ ///
+ /// Gets default registration method for the provided dependency registrator type.
+ ///
+ /// The dependency registrator type.
+ ///
+ public static Action GetDefaultRegistrationMethod()
+ {
+ var key = typeof(TDependencyRegistrator);
+ if (!Storage.ContainsKey(key))
+ {
+ throw new MissingDefaultRegistrationMethodException(key);
+ }
+ else
+ {
+ return Storage[key] as Action;
+ }
+ }
+
+ ///
+ /// Sets default registration method for the provided dependency registrator type.
+ ///
+ /// The dependency registrator type.
+ /// The default registration method.
+ public static void SetDefaultRegistrationMethod(Action registrationMethod)
+ {
+ var key = typeof(TDependencyRegistrator);
+ if (!Storage.ContainsKey(key))
+ {
+ Storage.Add(key, registrationMethod);
+ }
+ else
+ {
+ Storage[key] = registrationMethod;
+ }
+ }
+
+ ///
+ /// Clears all existing default registration methods.
+ ///
+ public static void ClearRegistrations()
+ {
+ Storage.Clear();
+ }
+ }
+}
diff --git a/Solid.IoC.Registration/Solid.IoC.Registration.csproj b/Solid.IoC.Registration/Solid.IoC.Registration.csproj
index 5950ae6f..0dd1568d 100644
--- a/Solid.IoC.Registration/Solid.IoC.Registration.csproj
+++ b/Solid.IoC.Registration/Solid.IoC.Registration.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Ioc.Registration.Specs.Tests.Contracts/IScenarioDataStore.cs b/Solid.Ioc.Registration.Specs.Tests.Contracts/IScenarioDataStore.cs
index 3fbd4ee3..dd45e13e 100644
--- a/Solid.Ioc.Registration.Specs.Tests.Contracts/IScenarioDataStore.cs
+++ b/Solid.Ioc.Registration.Specs.Tests.Contracts/IScenarioDataStore.cs
@@ -3,9 +3,4 @@
public interface IScenarioDataStore
{
}
-
- public abstract class ObjectBase
- {
-
- }
}
diff --git a/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.IoC.Registration.Specs.Tests.Contracts.csproj b/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.IoC.Registration.Specs.Tests.Contracts.csproj
new file mode 100644
index 00000000..dbe3f17c
--- /dev/null
+++ b/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.IoC.Registration.Specs.Tests.Contracts.csproj
@@ -0,0 +1,5 @@
+
+
+ netcoreapp3.1
+
+
\ No newline at end of file
diff --git a/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.Ioc.Registration.Specs.Tests.Contracts.csproj b/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.Ioc.Registration.Specs.Tests.Contracts.csproj
index cb631906..dbe3f17c 100644
--- a/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.Ioc.Registration.Specs.Tests.Contracts.csproj
+++ b/Solid.Ioc.Registration.Specs.Tests.Contracts/Solid.Ioc.Registration.Specs.Tests.Contracts.csproj
@@ -1,7 +1,5 @@
-
netcoreapp3.1
-
-
+
\ No newline at end of file
diff --git a/Solid.Ioc.Registration.Specs.Tests.Implementations/Solid.Ioc.Registration.Specs.Tests.Implementations.csproj b/Solid.Ioc.Registration.Specs.Tests.Implementations/Solid.Ioc.Registration.Specs.Tests.Implementations.csproj
index 52b25a67..ab4bfb09 100644
--- a/Solid.Ioc.Registration.Specs.Tests.Implementations/Solid.Ioc.Registration.Specs.Tests.Implementations.csproj
+++ b/Solid.Ioc.Registration.Specs.Tests.Implementations/Solid.Ioc.Registration.Specs.Tests.Implementations.csproj
@@ -1,11 +1,8 @@
-
-
+
netcoreapp3.1
-
-
-
+
\ No newline at end of file
diff --git a/Solid.Patterns.Builder/Solid.Patterns.Builder.csproj b/Solid.Patterns.Builder/Solid.Patterns.Builder.csproj
index 937b21bf..66961b7e 100644
--- a/Solid.Patterns.Builder/Solid.Patterns.Builder.csproj
+++ b/Solid.Patterns.Builder/Solid.Patterns.Builder.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Patterns.ChainOfResponsibility/Solid.Patterns.ChainOfResponsibility.csproj b/Solid.Patterns.ChainOfResponsibility/Solid.Patterns.ChainOfResponsibility.csproj
index 645829ae..6565f627 100644
--- a/Solid.Patterns.ChainOfResponsibility/Solid.Patterns.ChainOfResponsibility.csproj
+++ b/Solid.Patterns.ChainOfResponsibility/Solid.Patterns.ChainOfResponsibility.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Patterns.Memento/Solid.Patterns.Memento.csproj b/Solid.Patterns.Memento/Solid.Patterns.Memento.csproj
index 8c9bef99..94bf1306 100644
--- a/Solid.Patterns.Memento/Solid.Patterns.Memento.csproj
+++ b/Solid.Patterns.Memento/Solid.Patterns.Memento.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Patterns.Visitor/Solid.Patterns.Visitor.csproj b/Solid.Patterns.Visitor/Solid.Patterns.Visitor.csproj
index 20370caa..02f9feb9 100644
--- a/Solid.Patterns.Visitor/Solid.Patterns.Visitor.csproj
+++ b/Solid.Patterns.Visitor/Solid.Patterns.Visitor.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Composition.Client/Solid.Practices.Composition.Client.csproj b/Solid.Practices.Composition.Client/Solid.Practices.Composition.Client.csproj
index e52a3e16..8853e31c 100644
--- a/Solid.Practices.Composition.Client/Solid.Practices.Composition.Client.csproj
+++ b/Solid.Practices.Composition.Client/Solid.Practices.Composition.Client.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Composition.Container.Specs/Solid.Practices.Composition.Container.Specs.csproj b/Solid.Practices.Composition.Container.Specs/Solid.Practices.Composition.Container.Specs.csproj
index 01a9b00e..86b58f18 100644
--- a/Solid.Practices.Composition.Container.Specs/Solid.Practices.Composition.Container.Specs.csproj
+++ b/Solid.Practices.Composition.Container.Specs/Solid.Practices.Composition.Container.Specs.csproj
@@ -4,20 +4,14 @@
net5.0
-
- 7.1.0
-
-
- 6.0.0
-
+
+
-
+
-
- 2.4.1
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Solid.Practices.Composition.Container/Solid.Practices.Composition.Container.csproj b/Solid.Practices.Composition.Container/Solid.Practices.Composition.Container.csproj
index 3f450d97..cf4a6142 100644
--- a/Solid.Practices.Composition.Container/Solid.Practices.Composition.Container.csproj
+++ b/Solid.Practices.Composition.Container/Solid.Practices.Composition.Container.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Composition.Contracts/Solid.Practices.Composition.Contracts.csproj b/Solid.Practices.Composition.Contracts/Solid.Practices.Composition.Contracts.csproj
index 56a6c3fa..c5d174b8 100644
--- a/Solid.Practices.Composition.Contracts/Solid.Practices.Composition.Contracts.csproj
+++ b/Solid.Practices.Composition.Contracts/Solid.Practices.Composition.Contracts.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Composition.IntegrationTests.App/Assembly Source Provider.feature b/Solid.Practices.Composition.IntegrationTests.App/Assembly Source Provider.feature
index 71084b0f..6e10c0e0 100644
--- a/Solid.Practices.Composition.IntegrationTests.App/Assembly Source Provider.feature
+++ b/Solid.Practices.Composition.IntegrationTests.App/Assembly Source Provider.feature
@@ -9,8 +9,6 @@ Scenario: Load assemblies using default assembly loading strategy should create
When The assemblies provider loads the assemblies in the current folder
Then The loaded implementation type implements the loaded contract type
-@Ignore
-#This test fails on purpose to demonstrate dynamic loading issue thus it's ignored for now
Scenario: Load assemblies using custom assembly loading strategy should create matching types
Given I run in .NETStandard environment
And The assemblies loader used custom assembly loading strategy
diff --git a/Solid.Practices.Composition.IntegrationTests.App/Solid.Practices.Composition.IntegrationTests.App.csproj b/Solid.Practices.Composition.IntegrationTests.App/Solid.Practices.Composition.IntegrationTests.App.csproj
index a7eda6dc..7171e2a0 100644
--- a/Solid.Practices.Composition.IntegrationTests.App/Solid.Practices.Composition.IntegrationTests.App.csproj
+++ b/Solid.Practices.Composition.IntegrationTests.App/Solid.Practices.Composition.IntegrationTests.App.csproj
@@ -1,4 +1,4 @@
-
+
false
net5.0
@@ -11,11 +11,11 @@
..\tests\bin\composition
-
-
+
+
-
+
diff --git a/Solid.Practices.Composition.Platform.UWP.Tests/Properties/AssemblyInfo.cs b/Solid.Practices.Composition.Platform.UWP.Tests/Properties/AssemblyInfo.cs
index 3865aa11..46ea9a9e 100644
--- a/Solid.Practices.Composition.Platform.UWP.Tests/Properties/AssemblyInfo.cs
+++ b/Solid.Practices.Composition.Platform.UWP.Tests/Properties/AssemblyInfo.cs
@@ -20,6 +20,6 @@
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.3.1")]
-[assembly: AssemblyFileVersion("2.3.1")]
+[assembly: AssemblyVersion("2.3.2")]
+[assembly: AssemblyFileVersion("2.3.2")]
[assembly: ComVisible(false)]
diff --git a/Solid.Practices.Composition.Specs.Steps.Adapters/Solid.Practices.Composition.Specs.Steps.Adapters.csproj b/Solid.Practices.Composition.Specs.Steps.Adapters/Solid.Practices.Composition.Specs.Steps.Adapters.csproj
index 93c7a900..da2bd428 100644
--- a/Solid.Practices.Composition.Specs.Steps.Adapters/Solid.Practices.Composition.Specs.Steps.Adapters.csproj
+++ b/Solid.Practices.Composition.Specs.Steps.Adapters/Solid.Practices.Composition.Specs.Steps.Adapters.csproj
@@ -11,8 +11,8 @@
..\tests\bin\composition
-
-
+
+
diff --git a/Solid.Practices.Composition.Specs/Solid.Practices.Composition.Specs.csproj b/Solid.Practices.Composition.Specs/Solid.Practices.Composition.Specs.csproj
index 2048ea90..d2e9d8dd 100644
--- a/Solid.Practices.Composition.Specs/Solid.Practices.Composition.Specs.csproj
+++ b/Solid.Practices.Composition.Specs/Solid.Practices.Composition.Specs.csproj
@@ -5,16 +5,14 @@
- 6.0.0
+ 6.1.0
-
+
-
- 2.4.1
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Solid.Practices.Composition.Web/Solid.Practices.Composition.Web.csproj b/Solid.Practices.Composition.Web/Solid.Practices.Composition.Web.csproj
index 96d05417..27f791d3 100644
--- a/Solid.Practices.Composition.Web/Solid.Practices.Composition.Web.csproj
+++ b/Solid.Practices.Composition.Web/Solid.Practices.Composition.Web.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release\
diff --git a/Solid.Practices.Composition/Solid.Practices.Composition.csproj b/Solid.Practices.Composition/Solid.Practices.Composition.csproj
index 6c510348..39a0a694 100644
--- a/Solid.Practices.Composition/Solid.Practices.Composition.csproj
+++ b/Solid.Practices.Composition/Solid.Practices.Composition.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.IoC/DependencyRegistratorExtensions.cs b/Solid.Practices.IoC/DependencyRegistratorExtensions.cs
index 24014cbc..a835b767 100644
--- a/Solid.Practices.IoC/DependencyRegistratorExtensions.cs
+++ b/Solid.Practices.IoC/DependencyRegistratorExtensions.cs
@@ -256,60 +256,6 @@ public static IDependencyRegistrator AddCollection(this IDependencyRegistrator d
return dependencyRegistrator;
}
- ///
- /// Registers types as their abstractions using singleton lifetime style
- /// The assemblies are inspected using [IDependency]--[Dependency] naming convention
- ///
- /// The dependency registrator.
- /// The assembly which contains the contracts/abstractions
- /// The assembly which contains the implementations.
- ///
- public static IDependencyRegistrator RegisterAutomagically(
- this IDependencyRegistrator dependencyRegistrator,
- Assembly contractsAssembly,
- Assembly implementationsAssembly)
- {
- return dependencyRegistrator.RegisterAutomagically(
- (d, serviceType, implementationType) => d.RegisterSingleton(serviceType, implementationType),
- contractsAssembly,
- implementationsAssembly);
- }
-
- ///
- /// Registers types as their abstractions using provided registration method
- /// The assemblies are inspected using [IDependency]--[Dependency] naming convention
- ///
- /// The dependency registrator.
- /// The registration method.
- /// The assembly which contains the contracts/abstractions.
- /// The assembly which contains the implementations.
- ///
- public static TDependencyRegistrator RegisterAutomagically(
- this TDependencyRegistrator dependencyRegistrator,
- Action registrationMethod,
- Assembly contractsAssembly,
- Assembly implementationsAssembly)
- {
- var contracts =
- contractsAssembly.DefinedTypes.Where(t => t.IsInterface).Select(t => t.AsType()).ToArray();
- var implementations =
- implementationsAssembly.DefinedTypes.Where(
- t => t.IsInterface == false)
- .ToArray();
- var contractsInfo = contracts.ToDictionary(t => t.Name, t => t);
- var implementationsInfo = implementations.Where(t => t.Name.StartsWith("<>") == false)
- .ToDictionary(t => t.Name, t => t);
- foreach (var implementationInfo in implementationsInfo)
- {
- contractsInfo.TryGetValue("I" + implementationInfo.Key, out Type match);
- if (match != null)
- {
- registrationMethod.Invoke(dependencyRegistrator, match, implementationInfo.Value.AsType());
- }
- }
- return dependencyRegistrator;
- }
-
///
/// Registers the collection of types that implement the specified contract
/// into the dependency registrator.
diff --git a/Solid.Practices.IoC/Solid.Practices.IoC.csproj b/Solid.Practices.IoC/Solid.Practices.IoC.csproj
index 9c2fe901..dbc6e4a9 100644
--- a/Solid.Practices.IoC/Solid.Practices.IoC.csproj
+++ b/Solid.Practices.IoC/Solid.Practices.IoC.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Middleware.Specs/Solid.Practices.Middleware.Specs.csproj b/Solid.Practices.Middleware.Specs/Solid.Practices.Middleware.Specs.csproj
index 88ac5310..85997cf8 100644
--- a/Solid.Practices.Middleware.Specs/Solid.Practices.Middleware.Specs.csproj
+++ b/Solid.Practices.Middleware.Specs/Solid.Practices.Middleware.Specs.csproj
@@ -5,10 +5,10 @@
false
-
+
-
+
diff --git a/Solid.Practices.Middleware/Solid.Practices.Middleware.csproj b/Solid.Practices.Middleware/Solid.Practices.Middleware.csproj
index 66eaa583..d48a55bb 100644
--- a/Solid.Practices.Middleware/Solid.Practices.Middleware.csproj
+++ b/Solid.Practices.Middleware/Solid.Practices.Middleware.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Modularity/Solid.Practices.Modularity.csproj b/Solid.Practices.Modularity/Solid.Practices.Modularity.csproj
index 7e0de97d..b447e0b3 100644
--- a/Solid.Practices.Modularity/Solid.Practices.Modularity.csproj
+++ b/Solid.Practices.Modularity/Solid.Practices.Modularity.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release
diff --git a/Solid.Practices.Scheduling/Solid.Practices.Scheduling.csproj b/Solid.Practices.Scheduling/Solid.Practices.Scheduling.csproj
index 053f055e..df71991a 100644
--- a/Solid.Practices.Scheduling/Solid.Practices.Scheduling.csproj
+++ b/Solid.Practices.Scheduling/Solid.Practices.Scheduling.csproj
@@ -2,7 +2,7 @@
netstandard2.0
false
- 2.3.1
+ 2.3.2
..\Bin\netstandard\Release\
diff --git a/Solid.Tests.Infra/Solid.Tests.Infra.csproj b/Solid.Tests.Infra/Solid.Tests.Infra.csproj
index e95c0d29..09b7d8f8 100644
--- a/Solid.Tests.Infra/Solid.Tests.Infra.csproj
+++ b/Solid.Tests.Infra/Solid.Tests.Infra.csproj
@@ -10,4 +10,4 @@
-
+
\ No newline at end of file
diff --git a/Solid.sln b/Solid.sln
index 303cf4fb..40b7f3d0 100644
--- a/Solid.sln
+++ b/Solid.sln
@@ -113,11 +113,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Registration", "Registratio
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Solid.IoC.Registration", "Solid.IoC.Registration\Solid.IoC.Registration.csproj", "{9AB04FA5-CA09-4CD6-BECA-AEE11ECE00A4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Solid.IoC.Registration.Specs", "Solid.IoC.Registration.Specs\Solid.IoC.Registration.Specs.csproj", "{18472BD6-C832-4D4B-BA1B-3ABD58239EE5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Solid.IoC.Registration.Specs", "Solid.IoC.Registration.Specs\Solid.IoC.Registration.Specs.csproj", "{18472BD6-C832-4D4B-BA1B-3ABD58239EE5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Solid.IoC.Registration.Specs.Tests.Contracts", "Solid.Ioc.Registration.Specs.Tests.Contracts\Solid.IoC.Registration.Specs.Tests.Contracts.csproj", "{C21F3528-E8D7-4F9A-9B07-87C1F701F04F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Solid.IoC.Registration.Specs.Tests.Contracts", "Solid.Ioc.Registration.Specs.Tests.Contracts\Solid.IoC.Registration.Specs.Tests.Contracts.csproj", "{C21F3528-E8D7-4F9A-9B07-87C1F701F04F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Solid.Ioc.Registration.Specs.Tests.Implementations", "Solid.Ioc.Registration.Specs.Tests.Implementations\Solid.Ioc.Registration.Specs.Tests.Implementations.csproj", "{D4B29EE9-000C-4A1F-A267-B17787BC426B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Solid.IoC.Registration.Specs.Tests.Implementations", "Solid.Ioc.Registration.Specs.Tests.Implementations\Solid.IoC.Registration.Specs.Tests.Implementations.csproj", "{D4B29EE9-000C-4A1F-A267-B17787BC426B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Adapters", "Adapters", "{54B1398B-D7CB-4207-B538-9E38C17699D4}"
EndProject
diff --git a/appveyor.yml b/appveyor.yml
index a2ff7b6b..35717f1d 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,4 +1,4 @@
-version: 2.3.1.{build}
+version: 2.3.2.{build}
init:
- dotnet tool install --global SpecFlow.Plus.LivingDoc.CLI
configuration: Release
diff --git a/common/Common.Bootstrapping/Common.Bootstrapping.csproj b/common/Common.Bootstrapping/Common.Bootstrapping.csproj
index 79b19a4a..2172d44d 100644
--- a/common/Common.Bootstrapping/Common.Bootstrapping.csproj
+++ b/common/Common.Bootstrapping/Common.Bootstrapping.csproj
@@ -4,7 +4,7 @@
false
-
+
diff --git a/common/Common.Bootstrapping/CustomDynamicAssemblyLoader.cs b/common/Common.Bootstrapping/CustomDynamicAssemblyLoader.cs
new file mode 100644
index 00000000..03d55354
--- /dev/null
+++ b/common/Common.Bootstrapping/CustomDynamicAssemblyLoader.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using McMaster.NETCore.Plugins;
+
+namespace Common.Bootstrapping
+{
+ internal static class CustomDynamicAssemblyLoader
+ {
+ internal static IEnumerable Get(IEnumerable files)
+ {
+ return files.Select(r =>
+ PluginLoader.CreateFromAssemblyFile(Path.Combine(Directory.GetCurrentDirectory(), r),
+ config => config.PreferSharedTypes = true)
+ .LoadDefaultAssembly()).ToArray();
+ }
+ }
+}
\ No newline at end of file
diff --git a/common/Common.Bootstrapping/DynamicAssemblyLoader.cs b/common/Common.Bootstrapping/DynamicAssemblyLoader.cs
index 2ccb924d..a4a778e6 100644
--- a/common/Common.Bootstrapping/DynamicAssemblyLoader.cs
+++ b/common/Common.Bootstrapping/DynamicAssemblyLoader.cs
@@ -2,7 +2,7 @@
using System.IO;
using System.Linq;
using System.Reflection;
-using McMaster.NETCore.Plugins;
+using System.Runtime.Loader;
namespace Common.Bootstrapping
{
@@ -10,10 +10,9 @@ internal static class DynamicAssemblyLoader
{
internal static IEnumerable Get(IEnumerable files)
{
- return files.Select(r =>
- PluginLoader.CreateFromAssemblyFile(Path.Combine(Directory.GetCurrentDirectory(), r),
- config => config.PreferSharedTypes = true)
- .LoadDefaultAssembly()).ToArray();
+ return files.Select(r => AssemblyLoadContext.Default
+ .LoadFromAssemblyPath(Path.Combine(Directory.GetCurrentDirectory(),r)))
+ .ToArray();
}
}
}
diff --git a/devops/deploy/deploy-all.bat b/devops/deploy/deploy-all.bat
index e5ad36d2..defcdea2 100644
--- a/devops/deploy/deploy-all.bat
+++ b/devops/deploy/deploy-all.bat
@@ -1,5 +1,5 @@
rem TODO: Use common source for all version instances
-SET version=2.3.1
+SET version=2.3.2
rem TODO: Refactor using loop and automatic discovery
call deploy-single.bat Solid.Bootstrapping %version%
call deploy-single.bat Solid.Common %version%
diff --git a/devops/pack/solid.bootstrapping/contents/Solid.Bootstrapping.nuspec b/devops/pack/solid.bootstrapping/contents/Solid.Bootstrapping.nuspec
index 279d4f61..aaab9fb9 100644
--- a/devops/pack/solid.bootstrapping/contents/Solid.Bootstrapping.nuspec
+++ b/devops/pack/solid.bootstrapping/contents/Solid.Bootstrapping.nuspec
@@ -2,7 +2,7 @@
Solid.Bootstrapping
- 2.3.1
+ 2.3.2
Solid.Bootstrapping
Gennady Verdel
Gennady Verdel
@@ -14,13 +14,14 @@
over different bootstrapping capabilities: having ioc container, etc. as well as the most common middlewares to be used during bootstrapping
This package provides abstractions
over different bootstrapping capabilities: having ioc container, etc.
- Checked compatibility with .NET 5
+ Added support for default registration method.
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/devops/pack/solid.common.core/contents/Solid.Common.Core.nuspec b/devops/pack/solid.common.core/contents/Solid.Common.Core.nuspec
index 7ac1c2a5..f144f516 100644
--- a/devops/pack/solid.common.core/contents/Solid.Common.Core.nuspec
+++ b/devops/pack/solid.common.core/contents/Solid.Common.Core.nuspec
@@ -2,7 +2,7 @@
Solid.Common.Core
- 2.3.1
+ 2.3.2
Solid.Common.Core
Gennady Verdel
Gennady Verdel
@@ -14,7 +14,7 @@
This package provides common abstractions
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.common/contents/Solid.Common.nuspec b/devops/pack/solid.common/contents/Solid.Common.nuspec
index b5d21df8..69a4198b 100644
--- a/devops/pack/solid.common/contents/Solid.Common.nuspec
+++ b/devops/pack/solid.common/contents/Solid.Common.nuspec
@@ -2,7 +2,7 @@
Solid.Common
- 2.3.1
+ 2.3.2
Solid.Common
Gennady Verdel
Gennady Verdel
@@ -14,7 +14,7 @@
This package provides platform-specific implementation for common services
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.core/contents/solid.core.nuspec b/devops/pack/solid.core/contents/solid.core.nuspec
index 177e9625..feed7357 100644
--- a/devops/pack/solid.core/contents/solid.core.nuspec
+++ b/devops/pack/solid.core/contents/solid.core.nuspec
@@ -2,7 +2,7 @@
Solid.Core
- 2.3.1
+ 2.3.2
Solid.Core
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.extensibility/contents/Solid.Extensibility.nuspec b/devops/pack/solid.extensibility/contents/Solid.Extensibility.nuspec
index ccc1b281..33bb534d 100644
--- a/devops/pack/solid.extensibility/contents/Solid.Extensibility.nuspec
+++ b/devops/pack/solid.extensibility/contents/Solid.Extensibility.nuspec
@@ -2,7 +2,7 @@
Solid.Extensibility
- 2.3.1
+ 2.3.2
Solid.Extensibility
Gennady Verdel
Gennady Verdel
@@ -14,8 +14,8 @@
This package provides interfaces and wrappers for extensible objects
Checked compatibility with .NET 5
-
-
+
+
\ No newline at end of file
diff --git a/devops/pack/solid.ioc.adapters.bodi/contents/Solid.IoC.Adapters.BoDi.nuspec b/devops/pack/solid.ioc.adapters.bodi/contents/Solid.IoC.Adapters.BoDi.nuspec
index 2e4acc85..370db901 100644
--- a/devops/pack/solid.ioc.adapters.bodi/contents/Solid.IoC.Adapters.BoDi.nuspec
+++ b/devops/pack/solid.ioc.adapters.bodi/contents/Solid.IoC.Adapters.BoDi.nuspec
@@ -2,7 +2,7 @@
Solid.IoC.Adapters.BoDi
- 2.3.1
+ 2.3.2
Solid.IoC.Adapters.BoDi
Gennady Verdel
Gennady Verdel
@@ -15,7 +15,7 @@
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.ioc.registration/contents/Solid.IoC.Registration.nuspec b/devops/pack/solid.ioc.registration/contents/Solid.IoC.Registration.nuspec
index 9e4bd364..b5becf31 100644
--- a/devops/pack/solid.ioc.registration/contents/Solid.IoC.Registration.nuspec
+++ b/devops/pack/solid.ioc.registration/contents/Solid.IoC.Registration.nuspec
@@ -2,7 +2,7 @@
Solid.IoC.Registration
- 2.3.1
+ 2.3.2
Solid.IoC.Registration
Gennady Verdel
Gennady Verdel
@@ -12,6 +12,6 @@
https://github.com/godrose/Solid/blob/master/assets/icon.png?raw=true
This package provides means for automagical registration into an IoC container.
This package provides means for automagical registration into an IoC container.
- Checked compatibility with .NET 5
+ Added support for default registration method.
\ No newline at end of file
diff --git a/devops/pack/solid.patterns.builder/contents/Solid.Patterns.Builder.nuspec b/devops/pack/solid.patterns.builder/contents/Solid.Patterns.Builder.nuspec
index 4bd7001b..6341aa58 100644
--- a/devops/pack/solid.patterns.builder/contents/Solid.Patterns.Builder.nuspec
+++ b/devops/pack/solid.patterns.builder/contents/Solid.Patterns.Builder.nuspec
@@ -2,7 +2,7 @@
Solid.Patterns.Builder
- 2.3.1
+ 2.3.2
Solid.Patterns.Builder
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.patterns.chainofresponsibility/contents/Solid.Patterns.ChainOfResponsibility.nuspec b/devops/pack/solid.patterns.chainofresponsibility/contents/Solid.Patterns.ChainOfResponsibility.nuspec
index 8f221b3f..bfcefbd6 100644
--- a/devops/pack/solid.patterns.chainofresponsibility/contents/Solid.Patterns.ChainOfResponsibility.nuspec
+++ b/devops/pack/solid.patterns.chainofresponsibility/contents/Solid.Patterns.ChainOfResponsibility.nuspec
@@ -2,7 +2,7 @@
Solid.Patterns.ChainOfResponsibility
- 2.3.1
+ 2.3.2
Solid.Patterns.ChainOfResponsibility
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.patterns.memento/contents/Solid.Patterns.Memento.nuspec b/devops/pack/solid.patterns.memento/contents/Solid.Patterns.Memento.nuspec
index a9997c5c..44b23c18 100644
--- a/devops/pack/solid.patterns.memento/contents/Solid.Patterns.Memento.nuspec
+++ b/devops/pack/solid.patterns.memento/contents/Solid.Patterns.Memento.nuspec
@@ -2,7 +2,7 @@
Solid.Patterns.Memento
- 2.3.1
+ 2.3.2
Solid.Patterns.Memento
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.patterns.visitor/contents/Solid.Patterns.Visitor.nuspec b/devops/pack/solid.patterns.visitor/contents/Solid.Patterns.Visitor.nuspec
index f80f0c20..f7d16e24 100644
--- a/devops/pack/solid.patterns.visitor/contents/Solid.Patterns.Visitor.nuspec
+++ b/devops/pack/solid.patterns.visitor/contents/Solid.Patterns.Visitor.nuspec
@@ -2,7 +2,7 @@
Solid.Patterns.Visitor
- 2.3.1
+ 2.3.2
Solid.Patterns.Visitor
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.practices.composition.client/contents/Solid.Practices.Composition.Client.nuspec b/devops/pack/solid.practices.composition.client/contents/Solid.Practices.Composition.Client.nuspec
index 8e4d6ea4..5e58c895 100644
--- a/devops/pack/solid.practices.composition.client/contents/Solid.Practices.Composition.Client.nuspec
+++ b/devops/pack/solid.practices.composition.client/contents/Solid.Practices.Composition.Client.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Composition.Client
- 2.3.1
+ 2.3.2
Solid.Practices.Composition.Client
Gennady Verdel
Gennady Verdel
@@ -14,7 +14,7 @@
This package provides utilities for composing modular client applications.
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.practices.composition.core/contents/Solid.Practices.Composition.Core.nuspec b/devops/pack/solid.practices.composition.core/contents/Solid.Practices.Composition.Core.nuspec
index dc2f7a04..9e3329fc 100644
--- a/devops/pack/solid.practices.composition.core/contents/Solid.Practices.Composition.Core.nuspec
+++ b/devops/pack/solid.practices.composition.core/contents/Solid.Practices.Composition.Core.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Composition.Core
- 2.3.1
+ 2.3.2
Solid.Practices.Composition.Core
Gennady Verdel
Gennady Verdel
@@ -16,10 +16,10 @@ composing modular applications.
composing modular applications.
Checked compatibility with .NET 5
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/devops/pack/solid.practices.composition.web/contents/Solid.Practices.Composition.Web.nuspec b/devops/pack/solid.practices.composition.web/contents/Solid.Practices.Composition.Web.nuspec
index e059dea9..850bf8fd 100644
--- a/devops/pack/solid.practices.composition.web/contents/Solid.Practices.Composition.Web.nuspec
+++ b/devops/pack/solid.practices.composition.web/contents/Solid.Practices.Composition.Web.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Composition.Web
- 2.3.1
+ 2.3.2
Solid.Practices.Composition.Web
Gennady Verdel
Gennady Verdel
@@ -15,7 +15,7 @@ composing modular web server applications.
composing modular web server applications.
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.practices.ioc/contents/Solid.Practices.IoC.nuspec b/devops/pack/solid.practices.ioc/contents/Solid.Practices.IoC.nuspec
index 69144b70..52718cc2 100644
--- a/devops/pack/solid.practices.ioc/contents/Solid.Practices.IoC.nuspec
+++ b/devops/pack/solid.practices.ioc/contents/Solid.Practices.IoC.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.IoC
- 2.3.1
+ 2.3.2
Solid.Practices.IoC
Gennady Verdel
Gennady Verdel
diff --git a/devops/pack/solid.practices.middleware/contents/Solid.Practices.Middleware.nuspec b/devops/pack/solid.practices.middleware/contents/Solid.Practices.Middleware.nuspec
index 98ad7413..ae9031ba 100644
--- a/devops/pack/solid.practices.middleware/contents/Solid.Practices.Middleware.nuspec
+++ b/devops/pack/solid.practices.middleware/contents/Solid.Practices.Middleware.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Middleware
- 2.3.1
+ 2.3.2
Solid.Practices.Middleware
Gennady Verdel
Gennady Verdel
@@ -14,7 +14,7 @@
This package contains middleware interface.
Checked compatibility with .NET 5
-
+
\ No newline at end of file
diff --git a/devops/pack/solid.practices.modularity/contents/Solid.Practices.Modularity.nuspec b/devops/pack/solid.practices.modularity/contents/Solid.Practices.Modularity.nuspec
index b083c323..f8b37ced 100644
--- a/devops/pack/solid.practices.modularity/contents/Solid.Practices.Modularity.nuspec
+++ b/devops/pack/solid.practices.modularity/contents/Solid.Practices.Modularity.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Modularity
- 2.3.1
+ 2.3.2
Solid.Practices.Modularity
Gennady Verdel
Gennady Verdel
@@ -14,9 +14,9 @@
This package provides means for composing modular applications.
Checked compatibility with .NET 5
-
-
-
+
+
+
\ No newline at end of file
diff --git a/devops/pack/solid.practices.scheduling/contents/Solid.Practices.Scheduling.nuspec b/devops/pack/solid.practices.scheduling/contents/Solid.Practices.Scheduling.nuspec
index 0207f085..f76d111b 100644
--- a/devops/pack/solid.practices.scheduling/contents/Solid.Practices.Scheduling.nuspec
+++ b/devops/pack/solid.practices.scheduling/contents/Solid.Practices.Scheduling.nuspec
@@ -2,7 +2,7 @@
Solid.Practices.Scheduling
- 2.3.1
+ 2.3.2
Solid.Practices.Scheduling
Gennady Verdel
Gennady Verdel
diff --git a/devops/publish/publish-all.bat b/devops/publish/publish-all.bat
index 746673ae..ea0ef025 100644
--- a/devops/publish/publish-all.bat
+++ b/devops/publish/publish-all.bat
@@ -2,7 +2,7 @@ cd ../..
nuget restore
cd devops/publish
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '../build/build-all.ps1'"
-SET package_version=2.3.1
+SET package_version=2.3.2
cd ../test
call test-all
cd ../pack
diff --git a/devops/publish/publish-single.bat b/devops/publish/publish-single.bat
index 992747a0..9992c617 100644
--- a/devops/publish/publish-single.bat
+++ b/devops/publish/publish-single.bat
@@ -3,7 +3,7 @@ nuget restore
cd devops/publish
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '../build/build-all.ps1'"
SET package_name=%1
-SET package_version=2.3.1
+SET package_version=2.3.2
SET target=../../../packages/Tests-All
cd ../test
call test-all
diff --git a/devops/update/UpdateUtil/Properties/launchSettings.json b/devops/update/UpdateUtil/Properties/launchSettings.json
index 2b105da2..d5f63dd0 100644
--- a/devops/update/UpdateUtil/Properties/launchSettings.json
+++ b/devops/update/UpdateUtil/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"UpdateUtil": {
"commandName": "Project",
- "commandLineArgs": "bump-version Solid 2.3.1"
+ "commandLineArgs": "bump-version Solid 2.3.2"
}
}
}
\ No newline at end of file