From e7cebf1563239e9148182c9d6acd385e3d278004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sun, 29 Nov 2020 20:31:07 +0100 Subject: [PATCH] Delegate factory --- AutoFacSamles.sln | 6 +++ PatternDemoCore/PatternDemoCore.csproj | 12 ++++++ PatternDemoCore/Program.cs | 56 ++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 PatternDemoCore/PatternDemoCore.csproj create mode 100644 PatternDemoCore/Program.cs 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); + + + } + } +}