Cleaner Imm

This commit is contained in:
Marc Hernandez 2024-04-30 20:39:21 -07:00
parent cf20b86880
commit ad4bcf31a9

View File

@ -189,7 +189,7 @@ public record class Recorded<T> : Versioned<T>
MetaStorage = Meta with
{
Version = orig.Meta.Version + 1,
Reason = reason,
Reason = !string.IsNullOrWhiteSpace( reason ) ? reason : next.Meta.Reason,
ZZOld = orig,
MemberName = dbgName,
@ -227,6 +227,10 @@ public record class Timed<T> : Recorded<T>
public TimeSpan Since => Meta.TouchedAt - Meta.Old?.Meta.TouchedAt ?? TimeSpan.MaxValue;
public void CallOnChange()
{
OnChange( Meta.Old, (T)this );
}
override public T Record(
string reason = "",
@ -250,6 +254,18 @@ public record class Timed<T> : Recorded<T>
return Process( ( old ) => next, reason, dbgName, dbgPath, lineNumber, dbgExp );
}
public U ProcessFn<U>( Func<U, U> fn,
string reason = "",
[CallerMemberName] string dbgName = "",
[CallerFilePath] string dbgPath = "",
[CallerLineNumber] int lineNumber = 0,
[CallerArgumentExpression("next")]
string dbgExp = default
)
where U : T
{
return (U)ProcessFn( fn, reason, dbgName, dbgPath, lineNumber, dbgExp );
}
override public T Process( Func<T, T> fn,
string reason = "",
@ -259,6 +275,16 @@ public record class Timed<T> : Recorded<T>
[CallerArgumentExpression("fn")]
string dbgExp = default
)
=> ProcessFn( fn, reason, dbgName, dbgPath, dbgLine, dbgExp );
public T ProcessFn( Func<T, T> fn,
string reason = "",
[CallerMemberName] string dbgName = "",
[CallerFilePath] string dbgPath = "",
[CallerLineNumber] int dbgLine = 0,
[CallerArgumentExpression("fn")]
string dbgExp = default
)
{
var orig = ( T )this;
@ -270,7 +296,7 @@ public record class Timed<T> : Recorded<T>
{
//Versioned
Version = orig.Meta.Version + 1,
Reason = reason,
Reason = !string.IsNullOrWhiteSpace( reason ) ? reason : next.Meta.Reason,
//Recorded
MemberName = dbgName,