From ac079eb6124120f1656d6aa7face452233aac7be Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 23 Jul 2023 21:10:33 +0500 Subject: [PATCH] Update strategy were changed --- .../Models/Forces/Logics/ActionUpdateStrategy.cs | 2 ++ .../Logics/FactorCombinationUpdateStrategy.cs | 1 + .../Forces/Logics/ForceActionUpdateStrategy.cs | 1 + .../Logics/ForceCombinationListUpdateStrategy.cs | 4 ++-- .../Forces/Logics/ForcePairUpdateStrategy.cs | 1 + .../Forces/Logics/ForceTupleUpdateStrategy.cs | 1 + .../Logics/MaterialPartialFactorUpdateStrategy.cs | 1 + .../Logics/MaterialSafetyFactorUpdateStrategy.cs | 1 + .../Logics/CompressedMemberUpdateStrategy.cs | 1 + .../Shapes/Logics/CircleShapeUpdateStrategy.cs | 1 + .../Shapes/Logics/LineShapeUpdateStrategy.cs | 1 + .../Shapes/Logics/PointShapeUpdateStrategy.cs | 1 + .../Shapes/Logics/RectangleShapeUpdateStrategy.cs | 1 + .../Materials/Logics/ConcreteLibUpdateStrategy.cs | 1 + .../Materials/Logics/ElasticUpdateStrategy.cs | 1 + .../Models/Materials/Logics/FRUpdateStrategy.cs | 1 + .../Materials/Logics/LibMaterialUpdateStrategy.cs | 4 ++-- .../Materials/Logics/MaterialUpdateStrategy.cs | 1 + .../Logics/ReinforcementLibUpdateStrategy.cs | 1 + .../Logics/ForceCalculatorUpdateStrategy.cs | 1 + .../Analyses/Logics/CalculatorUpdateStrategy.cs | 1 + .../Primitives/Logics/BaseUpdateStrategy.cs | 15 ++++++++------- .../Primitives/Logics/CircleUpdateStrategy.cs | 1 + .../Logics/DivisionPropsUpdateStrategy.cs | 1 + .../Logics/NdmPrimitiveUpdateStrategy.cs | 1 + .../Primitives/Logics/PointUpdateStrategy.cs | 1 + .../Primitives/Logics/RebarUpdateStrategy.cs | 1 + .../Primitives/Logics/RectangleUpdateStrategy.cs | 1 + .../Logics/VisualPropsUpdateStrategy.cs | 1 + 29 files changed, 39 insertions(+), 11 deletions(-) diff --git a/StructureHelperCommon/Models/Forces/Logics/ActionUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/ActionUpdateStrategy.cs index f7e57f1..08f4cb5 100644 --- a/StructureHelperCommon/Models/Forces/Logics/ActionUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/ActionUpdateStrategy.cs @@ -14,6 +14,8 @@ namespace StructureHelperCommon.Models.Forces readonly IUpdateStrategy forceUpdateStrategy = new ForceActionUpdateStrategy(); public void Update(IAction targetObject, IAction sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } + CheckObject.CompareTypes(targetObject, sourceObject); targetObject.Name = sourceObject.Name; if (targetObject is IForceAction forceAction) diff --git a/StructureHelperCommon/Models/Forces/Logics/FactorCombinationUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/FactorCombinationUpdateStrategy.cs index 8521b79..b09672c 100644 --- a/StructureHelperCommon/Models/Forces/Logics/FactorCombinationUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/FactorCombinationUpdateStrategy.cs @@ -13,6 +13,7 @@ namespace StructureHelperCommon.Models.Forces readonly IUpdateStrategy tupleUpdateStrategy = new ForceTupleUpdateStrategy(); public void Update(IForceCombinationByFactor targetObject, IForceCombinationByFactor sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); tupleUpdateStrategy.Update(targetObject.FullSLSForces, sourceObject.FullSLSForces); targetObject.ULSFactor = sourceObject.ULSFactor; diff --git a/StructureHelperCommon/Models/Forces/Logics/ForceActionUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/ForceActionUpdateStrategy.cs index d8b7393..a8584eb 100644 --- a/StructureHelperCommon/Models/Forces/Logics/ForceActionUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/ForceActionUpdateStrategy.cs @@ -19,6 +19,7 @@ namespace StructureHelperCommon.Models.Forces private readonly IUpdateStrategy forceListUpdateStrategy = new ForceCombinationListUpdateStrategy(); public void Update(IForceAction targetObject, IForceAction sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); targetObject.SetInGravityCenter = sourceObject.SetInGravityCenter; pointStrategy.Update(targetObject.ForcePoint, sourceObject.ForcePoint); diff --git a/StructureHelperCommon/Models/Forces/Logics/ForceCombinationListUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/ForceCombinationListUpdateStrategy.cs index 5e6c210..429bd5c 100644 --- a/StructureHelperCommon/Models/Forces/Logics/ForceCombinationListUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/ForceCombinationListUpdateStrategy.cs @@ -12,10 +12,10 @@ namespace StructureHelperCommon.Models.Forces { public void Update(IForceCombinationList targetObject, IForceCombinationList sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); - var forcesList = new List(sourceObject.DesignForces); targetObject.DesignForces.Clear(); - foreach (var item in forcesList) + foreach (var item in sourceObject.DesignForces) { targetObject.DesignForces.Add((IDesignForceTuple)item.Clone()); } diff --git a/StructureHelperCommon/Models/Forces/Logics/ForcePairUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/ForcePairUpdateStrategy.cs index f32582d..e657326 100644 --- a/StructureHelperCommon/Models/Forces/Logics/ForcePairUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/ForcePairUpdateStrategy.cs @@ -15,6 +15,7 @@ namespace StructureHelperCommon.Models.Forces private readonly IUpdateStrategy tupleUpdateStrategy = new ForceTupleUpdateStrategy(); public void Update(IDesignForcePair targetObject, IDesignForcePair sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); targetObject.LimitState = sourceObject.LimitState; tupleUpdateStrategy.Update(targetObject.LongForceTuple, sourceObject.LongForceTuple); diff --git a/StructureHelperCommon/Models/Forces/Logics/ForceTupleUpdateStrategy.cs b/StructureHelperCommon/Models/Forces/Logics/ForceTupleUpdateStrategy.cs index 2fb68e3..bde548b 100644 --- a/StructureHelperCommon/Models/Forces/Logics/ForceTupleUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Forces/Logics/ForceTupleUpdateStrategy.cs @@ -13,6 +13,7 @@ namespace StructureHelperCommon.Models.Forces { public void Update(IForceTuple targetObject, IForceTuple sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.IsNull(targetObject, ": target object "); CheckObject.IsNull(sourceObject, ": source object "); diff --git a/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialPartialFactorUpdateStrategy.cs b/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialPartialFactorUpdateStrategy.cs index d2fcb37..d1747cd 100644 --- a/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialPartialFactorUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialPartialFactorUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperCommon.Models.Materials.Libraries { public void Update(IMaterialPartialFactor targetObject, IMaterialPartialFactor sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.LimitState = sourceObject.LimitState; targetObject.StressState = sourceObject.StressState; targetObject.CalcTerm = sourceObject.CalcTerm; diff --git a/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialSafetyFactorUpdateStrategy.cs b/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialSafetyFactorUpdateStrategy.cs index 700e091..ae363de 100644 --- a/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialSafetyFactorUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Materials/Libraries/Logics/MaterialSafetyFactorUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperCommon.Models.Materials.Libraries { public void Update(IMaterialSafetyFactor targetObject, IMaterialSafetyFactor sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Name = sourceObject.Name; targetObject.Take = sourceObject.Take; targetObject.Description = sourceObject.Description; diff --git a/StructureHelperCommon/Models/Sections/Logics/CompressedMemberUpdateStrategy.cs b/StructureHelperCommon/Models/Sections/Logics/CompressedMemberUpdateStrategy.cs index 32e6d81..779205f 100644 --- a/StructureHelperCommon/Models/Sections/Logics/CompressedMemberUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Sections/Logics/CompressedMemberUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperCommon.Models.Sections { public void Update(ICompressedMember targetObject, ICompressedMember sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Buckling = sourceObject.Buckling; targetObject.GeometryLength = sourceObject.GeometryLength; targetObject.LengthFactorX = sourceObject.LengthFactorX; diff --git a/StructureHelperCommon/Models/Shapes/Logics/CircleShapeUpdateStrategy.cs b/StructureHelperCommon/Models/Shapes/Logics/CircleShapeUpdateStrategy.cs index ad0033c..7d6d880 100644 --- a/StructureHelperCommon/Models/Shapes/Logics/CircleShapeUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Shapes/Logics/CircleShapeUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperCommon.Models.Shapes { public void Update(ICircleShape targetObject, ICircleShape sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Diameter = sourceObject.Diameter; } } diff --git a/StructureHelperCommon/Models/Shapes/Logics/LineShapeUpdateStrategy.cs b/StructureHelperCommon/Models/Shapes/Logics/LineShapeUpdateStrategy.cs index 964062f..4a84979 100644 --- a/StructureHelperCommon/Models/Shapes/Logics/LineShapeUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Shapes/Logics/LineShapeUpdateStrategy.cs @@ -13,6 +13,7 @@ namespace StructureHelperCommon.Models.Shapes readonly PointShapeUpdateStrategy pointUpdateStrategy = new(); public void Update(ILineShape targetObject, ILineShape sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } pointUpdateStrategy.Update(targetObject.StartPoint, sourceObject.StartPoint); pointUpdateStrategy.Update(targetObject.EndPoint, sourceObject.EndPoint); } diff --git a/StructureHelperCommon/Models/Shapes/Logics/PointShapeUpdateStrategy.cs b/StructureHelperCommon/Models/Shapes/Logics/PointShapeUpdateStrategy.cs index ede9960..e6e675b 100644 --- a/StructureHelperCommon/Models/Shapes/Logics/PointShapeUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Shapes/Logics/PointShapeUpdateStrategy.cs @@ -13,6 +13,7 @@ namespace StructureHelperCommon.Models.Shapes.Logics /// public void Update(IPoint2D targetObject, IPoint2D sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.X = sourceObject.X; targetObject.Y = sourceObject.Y; } diff --git a/StructureHelperCommon/Models/Shapes/Logics/RectangleShapeUpdateStrategy.cs b/StructureHelperCommon/Models/Shapes/Logics/RectangleShapeUpdateStrategy.cs index d2e8fad..713574c 100644 --- a/StructureHelperCommon/Models/Shapes/Logics/RectangleShapeUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Shapes/Logics/RectangleShapeUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperCommon.Models.Shapes { public void Update(IRectangleShape targetObject, IRectangleShape sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Width = sourceObject.Width; targetObject.Height = sourceObject.Height; targetObject.Angle = sourceObject.Angle; diff --git a/StructureHelperLogics/Models/Materials/Logics/ConcreteLibUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/ConcreteLibUpdateStrategy.cs index 18d5a4d..2dd2e8d 100644 --- a/StructureHelperLogics/Models/Materials/Logics/ConcreteLibUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/ConcreteLibUpdateStrategy.cs @@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.Materials LibMaterialUpdateStrategy libUpdateStrategy = new LibMaterialUpdateStrategy(); public void Update(IConcreteLibMaterial targetObject, IConcreteLibMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } libUpdateStrategy.Update(targetObject, sourceObject); targetObject.TensionForULS = sourceObject.TensionForULS; targetObject.TensionForSLS = sourceObject.TensionForSLS; diff --git a/StructureHelperLogics/Models/Materials/Logics/ElasticUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/ElasticUpdateStrategy.cs index 75db474..2fd9148 100644 --- a/StructureHelperLogics/Models/Materials/Logics/ElasticUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/ElasticUpdateStrategy.cs @@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.Materials { public void Update(IElasticMaterial targetObject, IElasticMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Modulus = sourceObject.Modulus; targetObject.CompressiveStrength = sourceObject.CompressiveStrength; targetObject.TensileStrength = sourceObject.TensileStrength; diff --git a/StructureHelperLogics/Models/Materials/Logics/FRUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/FRUpdateStrategy.cs index bcb283e..8a7a9e0 100644 --- a/StructureHelperLogics/Models/Materials/Logics/FRUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/FRUpdateStrategy.cs @@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.Materials { public void Update(IFRMaterial targetObject, IFRMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Modulus = sourceObject.Modulus; targetObject.CompressiveStrength = sourceObject.CompressiveStrength; targetObject.TensileStrength = targetObject.TensileStrength; diff --git a/StructureHelperLogics/Models/Materials/Logics/LibMaterialUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/LibMaterialUpdateStrategy.cs index 3d3f92f..8d4456f 100644 --- a/StructureHelperLogics/Models/Materials/Logics/LibMaterialUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/LibMaterialUpdateStrategy.cs @@ -12,10 +12,10 @@ namespace StructureHelperLogics.Models.Materials { public void Update(ILibMaterial targetObject, ILibMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.MaterialEntity = sourceObject.MaterialEntity; - var tmpSafetyFactors = new List(sourceObject.SafetyFactors); targetObject.SafetyFactors.Clear(); - foreach (var item in tmpSafetyFactors) + foreach (var item in sourceObject.SafetyFactors) { targetObject.SafetyFactors.Add(item.Clone() as IMaterialSafetyFactor); } diff --git a/StructureHelperLogics/Models/Materials/Logics/MaterialUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/MaterialUpdateStrategy.cs index 99ed558..88a603f 100644 --- a/StructureHelperLogics/Models/Materials/Logics/MaterialUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/MaterialUpdateStrategy.cs @@ -19,6 +19,7 @@ namespace StructureHelperLogics.Models.Materials private readonly IUpdateStrategy reinforcementStrategy = new ReinforcementLibUpdateStrategy(); public void Update(IHeadMaterial targetObject, IHeadMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Name = sourceObject.Name; targetObject.Color = sourceObject.Color; targetObject.HelperMaterial = sourceObject.HelperMaterial.Clone() as IHelperMaterial; diff --git a/StructureHelperLogics/Models/Materials/Logics/ReinforcementLibUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/ReinforcementLibUpdateStrategy.cs index a613295..e8c1dc7 100644 --- a/StructureHelperLogics/Models/Materials/Logics/ReinforcementLibUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/ReinforcementLibUpdateStrategy.cs @@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.Materials LibMaterialUpdateStrategy libUpdateStrategy = new LibMaterialUpdateStrategy(); public void Update(IReinforcementLibMaterial targetObject, IReinforcementLibMaterial sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } libUpdateStrategy.Update(targetObject, sourceObject); } } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/ForceCalculatorUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/ForceCalculatorUpdateStrategy.cs index 24a24e3..f8f77a8 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/ForceCalculatorUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/ForceCalculatorUpdateStrategy.cs @@ -10,6 +10,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics static readonly CompressedMemberUpdateStrategy compressedMemberUpdateStrategy = new(); public void Update(IForceCalculator targetObject, IForceCalculator sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Name = sourceObject.Name; targetObject.LimitStatesList.Clear(); targetObject.LimitStatesList.AddRange(sourceObject.LimitStatesList); diff --git a/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs index 96ddf09..12a8136 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs @@ -17,6 +17,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.Logics { public void Update(ICalculator targetObject, ICalculator sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); if (targetObject is IForceCalculator force) { diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/BaseUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/BaseUpdateStrategy.cs index 9862a35..0b36d62 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/BaseUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/BaseUpdateStrategy.cs @@ -16,14 +16,15 @@ namespace StructureHelperLogics.NdmCalculations.Primitives readonly ForceTupleUpdateStrategy tupleUpdateStrategy = new(); readonly VisualPropsUpdateStrategy visualPropsUpdateStrategy = new(); - public void Update(INdmPrimitive target, INdmPrimitive source) + public void Update(INdmPrimitive targetObject, INdmPrimitive sourceObject) { - target.Name = source.Name; - if (source.HeadMaterial != null) target.HeadMaterial = source.HeadMaterial; - target.Triangulate = source.Triangulate; - pointShapeUpdateStrategy.Update(target.Center, source.Center); - visualPropsUpdateStrategy.Update(target.VisualProperty, source.VisualProperty); - tupleUpdateStrategy.Update(target.UsersPrestrain, source.UsersPrestrain); + if (ReferenceEquals(targetObject, sourceObject)) { return; } + targetObject.Name = sourceObject.Name; + if (sourceObject.HeadMaterial != null) targetObject.HeadMaterial = sourceObject.HeadMaterial; + targetObject.Triangulate = sourceObject.Triangulate; + pointShapeUpdateStrategy.Update(targetObject.Center, sourceObject.Center); + visualPropsUpdateStrategy.Update(targetObject.VisualProperty, sourceObject.VisualProperty); + tupleUpdateStrategy.Update(targetObject.UsersPrestrain, sourceObject.UsersPrestrain); } } diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/CircleUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/CircleUpdateStrategy.cs index 960f38b..2d155a7 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/CircleUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/CircleUpdateStrategy.cs @@ -16,6 +16,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives public void Update(CirclePrimitive targetObject, CirclePrimitive sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } basePrimitiveUpdateStrategy.Update(targetObject, sourceObject); divisionPropsUpdateStrategy.Update(targetObject, sourceObject); shapeUpdateStrategy.Update(targetObject, sourceObject); diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/DivisionPropsUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/DivisionPropsUpdateStrategy.cs index 1e51b18..2eac440 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/DivisionPropsUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/DivisionPropsUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives { public void Update(IHasDivisionSize targetObject, IHasDivisionSize sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.NdmMaxSize = sourceObject.NdmMaxSize; targetObject.NdmMinDivision = sourceObject.NdmMinDivision; targetObject.ClearUnderlying = sourceObject.ClearUnderlying; diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/NdmPrimitiveUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/NdmPrimitiveUpdateStrategy.cs index 3d6a46d..0b766bb 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/NdmPrimitiveUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/NdmPrimitiveUpdateStrategy.cs @@ -9,6 +9,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives { public void Update(INdmPrimitive targetObject, INdmPrimitive sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.CompareTypes(targetObject, sourceObject); if (targetObject is PointPrimitive point) { diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/PointUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/PointUpdateStrategy.cs index e3f8a4b..b51c1b1 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/PointUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/PointUpdateStrategy.cs @@ -13,6 +13,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives static readonly BaseUpdateStrategy basePrimitiveUpdateStrategy = new(); public void Update(PointPrimitive targetObject, PointPrimitive sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } basePrimitiveUpdateStrategy.Update(targetObject, sourceObject); targetObject.Area = sourceObject.Area; } diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/RebarUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/RebarUpdateStrategy.cs index 43be8c7..0d26137 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/RebarUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/RebarUpdateStrategy.cs @@ -12,6 +12,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives static readonly BaseUpdateStrategy basePrimitiveUpdateStrategy = new(); public void Update(RebarPrimitive targetObject, RebarPrimitive sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } basePrimitiveUpdateStrategy.Update(targetObject, sourceObject); targetObject.Area = sourceObject.Area; targetObject.HostPrimitive = sourceObject.HostPrimitive; diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/RectangleUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/RectangleUpdateStrategy.cs index f5b5aa1..18c4e3c 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/RectangleUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/RectangleUpdateStrategy.cs @@ -15,6 +15,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives static readonly RectangleShapeUpdateStrategy shapeUpdateStrategy = new(); public void Update(RectanglePrimitive targetObject, RectanglePrimitive sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } basePrimitiveUpdateStrategy.Update(targetObject, sourceObject); divisionPropsUpdateStrategy.Update(targetObject, sourceObject); shapeUpdateStrategy.Update(targetObject, sourceObject); diff --git a/StructureHelperLogics/NdmCalculations/Primitives/Logics/VisualPropsUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Primitives/Logics/VisualPropsUpdateStrategy.cs index b7a4b96..d576b52 100644 --- a/StructureHelperLogics/NdmCalculations/Primitives/Logics/VisualPropsUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/Logics/VisualPropsUpdateStrategy.cs @@ -11,6 +11,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives { public void Update(IVisualProperty targetObject, IVisualProperty sourceObject) { + if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.IsVisible = sourceObject.IsVisible; targetObject.Color = sourceObject.Color; targetObject.SetMaterialColor = sourceObject.SetMaterialColor;