diff --git a/.gitignore b/.gitignore
index 1e9623f2..cbc17b6e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -180,3 +180,5 @@ $RECYCLE.BIN/
/.vs/config/applicationhost.config
/.vs/Grace/v15/sqlite3/storage.ide
/.vs/Grace/v15/sqlite3/storage.ide-journal
+/.vs/Grace/v15
+/.vs/Grace/DesignTimeBuild/.dtbcache
diff --git a/appveyor.yml b/appveyor.yml
index f1919ef9..19ea81fa 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,6 +1,6 @@
environment:
- build_version: 6.3.3
- Version: $(build_version)
+ build_version: 6.3.4
+ Version: $(build_version)-Nightly%APPVEYOR_BUILD_NUMBER%
COVERALLS_REPO_TOKEN:
secure: +OWHMxYHaMp6iRNNLZcMZq423PhYWxMky+B2C0p3U8v7tpdoKRMzWZKJ1LuYO60O
version: $(build_version)-{build}
@@ -24,7 +24,10 @@ after_build:
test_script:
- cmd: cd tests/Grace.Tests/
- cmd: CodeCoverageAppVeyor.cmd
+- sh: dotnet test tests/Grace.Tests/Grace.Tests.csproj
artifacts:
- path: Grace*.nupkg
name: Grace
-os: Visual Studio 2017
+image:
+- Visual Studio 2017
+- Ubuntu
\ No newline at end of file
diff --git a/src/Grace.Dynamic/Grace.Dynamic.csproj b/src/Grace.Dynamic/Grace.Dynamic.csproj
index f50748be..b9ccf0c2 100644
--- a/src/Grace.Dynamic/Grace.Dynamic.csproj
+++ b/src/Grace.Dynamic/Grace.Dynamic.csproj
@@ -4,6 +4,7 @@
IL Generation library for Grace dependency injection container
Ian Johnson
netstandard1.1;net45
+ netstandard1.1
true
Grace.Dynamic
..\Grace.snk
@@ -22,10 +23,21 @@
full
+
+
+ true
+ true
+ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
+
+
+
+
+
+
diff --git a/src/Grace.Factory/Grace.Factory.csproj b/src/Grace.Factory/Grace.Factory.csproj
index 798b3f8b..de173a4b 100644
--- a/src/Grace.Factory/Grace.Factory.csproj
+++ b/src/Grace.Factory/Grace.Factory.csproj
@@ -1,9 +1,10 @@
-
+
IL Generation library for Grace dependency injection container
Ian Johnson
netstandard1.1;net45
+ netstandard1.1
true
Grace.Factory
..\Grace.snk
@@ -22,10 +23,21 @@
full
+
+
+ true
+ true
+ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
+
+
+
+
+
+
diff --git a/src/Grace/DependencyInjection/IExportRegistrationBlock.cs b/src/Grace/DependencyInjection/IExportRegistrationBlock.cs
index 74395f12..39908c8d 100644
--- a/src/Grace/DependencyInjection/IExportRegistrationBlock.cs
+++ b/src/Grace/DependencyInjection/IExportRegistrationBlock.cs
@@ -92,7 +92,7 @@ public interface IExportRegistrationBlock
/// decorator logic
///
void ExportDecorator(Func apply, bool applyAfterLifestyle = true);
-
+
///
/// Export an expression tree
///
diff --git a/src/Grace/DependencyInjection/IExportRegistrationBlockExtensions.cs b/src/Grace/DependencyInjection/IExportRegistrationBlockExtensions.cs
index 7832bee9..ab18cc3e 100644
--- a/src/Grace/DependencyInjection/IExportRegistrationBlockExtensions.cs
+++ b/src/Grace/DependencyInjection/IExportRegistrationBlockExtensions.cs
@@ -4,6 +4,7 @@
using System.Linq.Expressions;
using System.Reflection;
using Grace.DependencyInjection.Impl;
+using Grace.DependencyInjection.Impl.CompiledStrategies;
using Grace.DependencyInjection.Impl.Expressions;
namespace Grace.DependencyInjection
@@ -117,6 +118,12 @@ public static IFluentExportInstanceConfiguration ExportNamedValue(
throw new Exception("This method can only be used on members (i.e. ExportNamedValue(() => SomeProperty))");
}
+ public static void ExportDecoratorFactory(this IExportRegistrationBlock registrationBlock,
+ Func factory)
+ {
+ registrationBlock.AddActivationStrategy(new CompiledFactoryDecoratorStrategy(factory, registrationBlock.OwningScope));
+ }
+
///
/// Import all members of a specific type and can be filtered
///
@@ -280,11 +287,11 @@ public static IExportRegistrationBlock ExcludeTypeFromAutoRegistration(this IExp
public static IExportRegistrationBlock ExportInitialize(this IExportRegistrationBlock block,
Action initializeAction)
{
- var func = new Func