From be4866d79923a6e566b91393c65ce1b6964cfb5b Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 10 May 2024 13:10:53 +0100 Subject: [PATCH 1/5] Demo of InterfaceGenerator --- DUI3-DX/Directory.Build.Props | 1 + .../Speckle.Autofac/DependencyInjection/Factory.cs | 4 +++- .../Speckle.Autofac/DependencyInjection/IFactory.cs | 12 ------------ .../DependencyInjection/IUnitOfWork.cs | 7 ------- .../DependencyInjection/IUnitOfWorkFactory.cs | 9 --------- .../DependencyInjection/UnitOfWork.cs | 10 +++++++++- .../DependencyInjection/UnitOfWorkFactory.cs | 2 ++ DUI3-DX/Sdk/Speckle.Autofac/Files/IStorageInfo.cs | 6 ------ DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs | 3 +++ 9 files changed, 18 insertions(+), 36 deletions(-) delete mode 100644 DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IFactory.cs delete mode 100644 DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWork.cs delete mode 100644 DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWorkFactory.cs delete mode 100644 DUI3-DX/Sdk/Speckle.Autofac/Files/IStorageInfo.cs diff --git a/DUI3-DX/Directory.Build.Props b/DUI3-DX/Directory.Build.Props index f6527d23eb..dc545bc2ec 100644 --- a/DUI3-DX/Directory.Build.Props +++ b/DUI3-DX/Directory.Build.Props @@ -9,5 +9,6 @@ + diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs index f173abc4e4..a9449548ce 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs @@ -1,7 +1,9 @@ using Autofac.Features.Indexed; +using InterfaceGenerator; namespace Speckle.Autofac.DependencyInjection; +[GenerateAutoInterface] public class Factory : IFactory where TValue : class { @@ -12,7 +14,7 @@ public Factory(IIndex types) _types = types; } - public TValue? ResolveInstance(TKey strongName) + public TValue ResolveInstance(TKey strongName) { _types.TryGetValue(strongName, out TValue value); return value; diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IFactory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IFactory.cs deleted file mode 100644 index d3471c4cfb..0000000000 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IFactory.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Speckle.Autofac.DependencyInjection; - -// POC: NEXT UP -// * begin scope: https://stackoverflow.com/questions/49595198/autofac-resolving-through-factory-methods -// Interceptors? - -// POC: this might be somehting that could go in a wholly converter agnostic project -public interface IFactory - where TValue : class -{ - TValue? ResolveInstance(TKey strongName); -} diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWork.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWork.cs deleted file mode 100644 index 5d58d1aabe..0000000000 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWork.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Speckle.Autofac.DependencyInjection; - -public interface IUnitOfWork : IDisposable - where TService : class -{ - TService Service { get; } -} diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWorkFactory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWorkFactory.cs deleted file mode 100644 index 020af4151c..0000000000 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/IUnitOfWorkFactory.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Speckle.Autofac.DependencyInjection; - -public interface IUnitOfWorkFactory -{ - // POC: this takes a TService but I wonder if the resolution could be in the - // Resolve method - IUnitOfWork Resolve() - where TService : class; -} diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs index 650e8b3296..3fcc9259e7 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs @@ -1,7 +1,14 @@ using Autofac; +using InterfaceGenerator; namespace Speckle.Autofac.DependencyInjection; +public partial interface IUnitOfWork : IDisposable + where TService : class +{ + +} +[GenerateAutoInterface] public sealed class UnitOfWork : IUnitOfWork where TService : class { @@ -15,7 +22,8 @@ public UnitOfWork(ILifetimeScope unitOfWorkScope, TService service) } public TService Service { get; private set; } - + + [AutoInterfaceIgnore] public void Dispose() => Disposing(true); private void Disposing(bool fromDispose) diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs index 94603a2264..250fede16c 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs @@ -1,9 +1,11 @@ using Autofac; using Autofac.Core; +using InterfaceGenerator; using Speckle.Core.Logging; namespace Speckle.Autofac.DependencyInjection; +[GenerateAutoInterface] public class UnitOfWorkFactory : IUnitOfWorkFactory { private readonly ILifetimeScope _parentScope; diff --git a/DUI3-DX/Sdk/Speckle.Autofac/Files/IStorageInfo.cs b/DUI3-DX/Sdk/Speckle.Autofac/Files/IStorageInfo.cs deleted file mode 100644 index 0ee9cee332..0000000000 --- a/DUI3-DX/Sdk/Speckle.Autofac/Files/IStorageInfo.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Speckle.Autofac.Files; - -public interface IStorageInfo -{ - IEnumerable GetFilenamesInDirectory(string path, string pattern); -} diff --git a/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs b/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs index af55e1405a..c072c59963 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs @@ -1,5 +1,8 @@ +using InterfaceGenerator; + namespace Speckle.Autofac.Files; +[GenerateAutoInterface] public class StorageInfo : IStorageInfo { public IEnumerable GetFilenamesInDirectory(string path, string pattern) From 3077e0cae8a92d6580ec71df74aa6bc4d89ac5c8 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 10 May 2024 13:15:14 +0100 Subject: [PATCH 2/5] fmt --- .../Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs index 3fcc9259e7..62f4fffd40 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs @@ -4,10 +4,8 @@ namespace Speckle.Autofac.DependencyInjection; public partial interface IUnitOfWork : IDisposable - where TService : class -{ - -} + where TService : class { } + [GenerateAutoInterface] public sealed class UnitOfWork : IUnitOfWork where TService : class @@ -22,7 +20,7 @@ public UnitOfWork(ILifetimeScope unitOfWorkScope, TService service) } public TService Service { get; private set; } - + [AutoInterfaceIgnore] public void Dispose() => Disposing(true); From a40b3b29e978d6f3d6d4eeb156f17b1c090ae289 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 17 May 2024 17:08:45 +0100 Subject: [PATCH 3/5] use new package --- DUI3-DX/Directory.Build.Props | 2 +- DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs | 4 ++-- DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs | 2 +- .../Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs | 2 +- DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DUI3-DX/Directory.Build.Props b/DUI3-DX/Directory.Build.Props index dc545bc2ec..a4f6bb0fc7 100644 --- a/DUI3-DX/Directory.Build.Props +++ b/DUI3-DX/Directory.Build.Props @@ -9,6 +9,6 @@ - + diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs index a9449548ce..f6d3827b0a 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs @@ -1,5 +1,5 @@ using Autofac.Features.Indexed; -using InterfaceGenerator; +using Speckle.InterfaceGenerator; namespace Speckle.Autofac.DependencyInjection; @@ -14,7 +14,7 @@ public Factory(IIndex types) _types = types; } - public TValue ResolveInstance(TKey strongName) + public TValue? ResolveInstance(TKey strongName) { _types.TryGetValue(strongName, out TValue value); return value; diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs index 62f4fffd40..d73f4121ff 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs @@ -1,5 +1,5 @@ using Autofac; -using InterfaceGenerator; +using Speckle.InterfaceGenerator; namespace Speckle.Autofac.DependencyInjection; diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs index 250fede16c..295519d8ef 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWorkFactory.cs @@ -1,6 +1,6 @@ using Autofac; using Autofac.Core; -using InterfaceGenerator; +using Speckle.InterfaceGenerator; using Speckle.Core.Logging; namespace Speckle.Autofac.DependencyInjection; diff --git a/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs b/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs index c072c59963..a810c1c838 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/Files/StorageInfo.cs @@ -1,4 +1,4 @@ -using InterfaceGenerator; +using Speckle.InterfaceGenerator; namespace Speckle.Autofac.Files; From 080eb8e6d5a7e3d6e2955be5f09290db350444d8 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Mon, 20 May 2024 08:18:52 +0100 Subject: [PATCH 4/5] update autointerface again --- DUI3-DX/Directory.Build.Props | 2 +- DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs | 7 +++++-- .../Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/DUI3-DX/Directory.Build.Props b/DUI3-DX/Directory.Build.Props index a4f6bb0fc7..57c6c1ba12 100644 --- a/DUI3-DX/Directory.Build.Props +++ b/DUI3-DX/Directory.Build.Props @@ -9,6 +9,6 @@ - + diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs index f6d3827b0a..e68fce561d 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/Factory.cs @@ -16,7 +16,10 @@ public Factory(IIndex types) public TValue? ResolveInstance(TKey strongName) { - _types.TryGetValue(strongName, out TValue value); - return value; + if (_types.TryGetValue(strongName, out TValue value)) + { + return value; + } + return null; } } diff --git a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs index d73f4121ff..43e69adf3d 100644 --- a/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs +++ b/DUI3-DX/Sdk/Speckle.Autofac/DependencyInjection/UnitOfWork.cs @@ -19,7 +19,7 @@ public UnitOfWork(ILifetimeScope unitOfWorkScope, TService service) Service = service; } - public TService Service { get; private set; } + public TService Service { get; } [AutoInterfaceIgnore] public void Dispose() => Disposing(true); From bbf5c694d278d0d6eddf0365b23d1301267a7a98 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Mon, 20 May 2024 09:35:20 +0100 Subject: [PATCH 5/5] fix autogenerated interfaces --- DUI3-DX/Directory.Build.Props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DUI3-DX/Directory.Build.Props b/DUI3-DX/Directory.Build.Props index 57c6c1ba12..add00d3739 100644 --- a/DUI3-DX/Directory.Build.Props +++ b/DUI3-DX/Directory.Build.Props @@ -9,6 +9,6 @@ - +