diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs index b7b00916b..643333b0a 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs @@ -98,7 +98,7 @@ public class ArcGISRootObjectBuilder : IRootObjectBuilder // don't use cache for group layers if ( mapMember is not GroupLayer - && _sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference value) + && _sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference? value) ) { converted = value; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs index 78724301b..e0624513e 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs @@ -108,7 +108,7 @@ public class AutocadRootObjectBuilder : IRootObjectBuilder { converted = instanceProxy; } - else if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference value)) + else if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference? value)) { converted = value; cacheHitCount++; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs index 10bcfef88..b3b293e8c 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs @@ -99,7 +99,7 @@ public class RevitRootObjectBuilder : IRootObjectBuilder try { Base converted; - if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference value)) + if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference? value)) { converted = value; cacheHitCount++; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs index 7b6d61c7f..278cc4eb0 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs @@ -146,7 +146,7 @@ public class RhinoRootObjectBuilder : IRootObjectBuilder { converted = instanceProxies[applicationId]; } - else if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference value)) + else if (_sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference? value)) { converted = value; } diff --git a/Sdk/Speckle.Connectors.Utils/Caching/ISendConversionCache.cs b/Sdk/Speckle.Connectors.Utils/Caching/ISendConversionCache.cs index 02c11e65c..bff42e3e8 100644 --- a/Sdk/Speckle.Connectors.Utils/Caching/ISendConversionCache.cs +++ b/Sdk/Speckle.Connectors.Utils/Caching/ISendConversionCache.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Speckle.Sdk.Models; namespace Speckle.Connectors.Utils.Caching; @@ -20,5 +21,5 @@ public interface ISendConversionCache /// public void EvictObjects(IEnumerable objectIds); public void ClearCache(); - bool TryGetValue(string projectId, string applicationId, out ObjectReference objectReference); + bool TryGetValue(string projectId, string applicationId, [NotNullWhen(true)] out ObjectReference? objectReference); } diff --git a/Sdk/Speckle.Connectors.Utils/Caching/NullSendConversionCache.cs b/Sdk/Speckle.Connectors.Utils/Caching/NullSendConversionCache.cs index 3ba7e8f14..65a5149b1 100644 --- a/Sdk/Speckle.Connectors.Utils/Caching/NullSendConversionCache.cs +++ b/Sdk/Speckle.Connectors.Utils/Caching/NullSendConversionCache.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Speckle.Sdk.Models; namespace Speckle.Connectors.Utils.Caching; @@ -13,9 +14,13 @@ public class NullSendConversionCache : ISendConversionCache public void ClearCache() { } - public bool TryGetValue(string projectId, string applicationId, out ObjectReference objectReference) + public bool TryGetValue( + string projectId, + string applicationId, + [NotNullWhen(true)] out ObjectReference? objectReference + ) { - objectReference = new ObjectReference(); + objectReference = null; return false; } } diff --git a/Sdk/Speckle.Connectors.Utils/Caching/SendConversionCache.cs b/Sdk/Speckle.Connectors.Utils/Caching/SendConversionCache.cs index 4fe7d62bd..7d9b8ece0 100644 --- a/Sdk/Speckle.Connectors.Utils/Caching/SendConversionCache.cs +++ b/Sdk/Speckle.Connectors.Utils/Caching/SendConversionCache.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Speckle.Sdk.Models; namespace Speckle.Connectors.Utils.Caching; @@ -25,6 +26,9 @@ public class SendConversionCache : ISendConversionCache public void ClearCache() => Cache.Clear(); - public bool TryGetValue(string projectId, string applicationId, out ObjectReference objectReference) => - Cache.TryGetValue((applicationId, projectId), out objectReference); + public bool TryGetValue( + string projectId, + string applicationId, + [NotNullWhen(true)] out ObjectReference? objectReference + ) => Cache.TryGetValue((applicationId, projectId), out objectReference); }