Cleaner Imm
This commit is contained in:
parent
cf20b86880
commit
ad4bcf31a9
30
imm/Imm.cs
30
imm/Imm.cs
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user