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