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
|
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,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user