diff --git a/AutoFacSamles.sln b/AutoFacSamles.sln
index ae22973..ae24021 100644
--- a/AutoFacSamles.sln
+++ b/AutoFacSamles.sln
@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.30717.126
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoFacSamles", "AutoFacSamles\AutoFacSamles.csproj", "{2CFA4809-16F7-4DB9-B4BB-CF60945656E5}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatternDemoCore", "PatternDemoCore\PatternDemoCore.csproj", "{D8041EF1-F2AC-4A04-A7A5-56E2CB6F249C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
{2CFA4809-16F7-4DB9-B4BB-CF60945656E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2CFA4809-16F7-4DB9-B4BB-CF60945656E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2CFA4809-16F7-4DB9-B4BB-CF60945656E5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D8041EF1-F2AC-4A04-A7A5-56E2CB6F249C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D8041EF1-F2AC-4A04-A7A5-56E2CB6F249C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D8041EF1-F2AC-4A04-A7A5-56E2CB6F249C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D8041EF1-F2AC-4A04-A7A5-56E2CB6F249C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/PatternDemoCore/PatternDemoCore.csproj b/PatternDemoCore/PatternDemoCore.csproj
new file mode 100644
index 0000000..d1ec505
--- /dev/null
+++ b/PatternDemoCore/PatternDemoCore.csproj
@@ -0,0 +1,12 @@
+
+
+
+ Exe
+ netcoreapp3.1
+
+
+
+
+
+
+
diff --git a/PatternDemoCore/Program.cs b/PatternDemoCore/Program.cs
new file mode 100644
index 0000000..8707079
--- /dev/null
+++ b/PatternDemoCore/Program.cs
@@ -0,0 +1,56 @@
+using Autofac;
+using System;
+
+namespace PatternDemoCore
+{
+
+ public class Service
+ {
+ public string DoSomething(int value)
+ {
+ return $"I have {value}";
+ }
+ }
+
+ public class DomainObject
+ {
+ private readonly Service service;
+ private readonly int value;
+
+ public delegate DomainObject Factory(int value);
+
+ public DomainObject(Service service, int value)
+ {
+ this.service = service;
+ this.value = value;
+ }
+
+ public override string ToString()
+ {
+ return service.DoSomething(value);
+ }
+ }
+
+ public class Demo
+ {
+ static void Main(string[] args)
+ {
+ var cb = new ContainerBuilder();
+ cb.RegisterType();
+ cb.RegisterType();
+
+ var container = cb.Build();
+ var dobj = container.Resolve(
+ new PositionalParameter(1, 42));
+ Console.WriteLine(dobj);
+
+ // Better way
+
+ var factory = container.Resolve();
+ var dobj2 = factory(42);
+ Console.WriteLine(dobj2);
+
+
+ }
+ }
+}