From b86d71644225dd7989d9cc3f544163bce42e36ee Mon Sep 17 00:00:00 2001 From: iatsuta Date: Fri, 6 Feb 2026 13:55:29 +0100 Subject: [PATCH 1/2] lazy-setter-in-PropertyAccessors --- src/CommonFramework/ExpressionExtensions.cs | 7 +++++++ src/CommonFramework/PropertyAccessors.cs | 2 +- src/__SolutionItems/CommonAssemblyInfo.cs | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/CommonFramework/ExpressionExtensions.cs b/src/CommonFramework/ExpressionExtensions.cs index 30f30c2..84d56f4 100644 --- a/src/CommonFramework/ExpressionExtensions.cs +++ b/src/CommonFramework/ExpressionExtensions.cs @@ -28,6 +28,13 @@ public Expression> ToSetLambdaExpression() return path.GetProperty().ToSetLambdaExpression(); } + public Action ToLazySetAction() + { + Lazy> lazySet = new(() => path.GetProperty().GetSetValueAction()); + + return (source, value) => lazySet.Value(source, value); + } + public Expression> OverrideInput(Expression> expr1) { return Expression.Lambda>(path.Body.Override(path.Parameters.Single(), expr1.Body), expr1.Parameters); diff --git a/src/CommonFramework/PropertyAccessors.cs b/src/CommonFramework/PropertyAccessors.cs index 0624a46..54df91c 100644 --- a/src/CommonFramework/PropertyAccessors.cs +++ b/src/CommonFramework/PropertyAccessors.cs @@ -11,7 +11,7 @@ public record PropertyAccessors( { public PropertyAccessors( Expression> path) - : this(path, path.Compile(), path.ToSetLambdaExpression().Compile()) + : this(path, path.Compile(), path.ToLazySetAction()) { } diff --git a/src/__SolutionItems/CommonAssemblyInfo.cs b/src/__SolutionItems/CommonAssemblyInfo.cs index 9674d4b..7136d1d 100644 --- a/src/__SolutionItems/CommonAssemblyInfo.cs +++ b/src/__SolutionItems/CommonAssemblyInfo.cs @@ -3,7 +3,7 @@ [assembly: AssemblyProduct("CommonFramework")] [assembly: AssemblyCompany("IvAt")] -[assembly: AssemblyVersion("2.1.13.0")] +[assembly: AssemblyVersion("2.1.14.0")] [assembly: AssemblyInformationalVersion("changes at build")] #if DEBUG From 443fccb47013d924cc085b18243e7460b6b6eddf Mon Sep 17 00:00:00 2001 From: iatsuta Date: Fri, 6 Feb 2026 14:00:46 +0100 Subject: [PATCH 2/2] upd --- src/CommonFramework/ExpressionExtensions.cs | 14 ++++++++++++-- src/CommonFramework/PropertyAccessors.cs | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/CommonFramework/ExpressionExtensions.cs b/src/CommonFramework/ExpressionExtensions.cs index 84d56f4..41b6b85 100644 --- a/src/CommonFramework/ExpressionExtensions.cs +++ b/src/CommonFramework/ExpressionExtensions.cs @@ -26,11 +26,21 @@ public static Expression> UnCurrying> ToSetLambdaExpression() { return path.GetProperty().ToSetLambdaExpression(); - } + } + + public Func ToGetFunc() + { + return path.GetProperty().GetGetValueFunc(); + } + + public Action ToSetAction() + { + return path.GetProperty().GetSetValueAction(); + } public Action ToLazySetAction() { - Lazy> lazySet = new(() => path.GetProperty().GetSetValueAction()); + Lazy> lazySet = new(path.ToSetAction); return (source, value) => lazySet.Value(source, value); } diff --git a/src/CommonFramework/PropertyAccessors.cs b/src/CommonFramework/PropertyAccessors.cs index 54df91c..741296d 100644 --- a/src/CommonFramework/PropertyAccessors.cs +++ b/src/CommonFramework/PropertyAccessors.cs @@ -11,7 +11,7 @@ public record PropertyAccessors( { public PropertyAccessors( Expression> path) - : this(path, path.Compile(), path.ToLazySetAction()) + : this(path, path.ToGetFunc(), path.ToLazySetAction()) { }