97 lines
2.7 KiB
C#
97 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
|
|
namespace db
|
|
{
|
|
public class Act
|
|
{
|
|
public Func<CommitResults> Fn => m_act;
|
|
|
|
|
|
public string DebugInfo { get; private set; } = "";
|
|
public string Path { get; private set; } = "";
|
|
public int Line { get; private set; } = -1;
|
|
public string Member { get; private set; } = "";
|
|
|
|
private Act( Func<CommitResults> act, string reason = "{unknown_base}", string dbgPath = "", int dbgLine = -1, string dbgMethod = "" )
|
|
{
|
|
m_act = act;
|
|
|
|
DebugInfo = reason;
|
|
Path = dbgPath;
|
|
Line = dbgLine;
|
|
Member = dbgMethod;
|
|
|
|
//ExtractValue( act );
|
|
}
|
|
|
|
static public Act create( Func<CommitResults> act, string reason = "{unknown}", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = -1, [CallerMemberName] string dbgMethod = "" )
|
|
{
|
|
//ExtractValue( act );
|
|
|
|
return new Act( act, reason, dbgPath, dbgLine, dbgMethod );
|
|
}
|
|
|
|
public static Act create<T>( Func<T, CommitResults> act, T p0, string reason = "{unknown}", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = -1, [CallerMemberName] string dbgMethod = "" )
|
|
{
|
|
//ExtractValue( act );
|
|
|
|
//return new Act( act );
|
|
|
|
return new Act( () => { return act( p0 ); }, reason, dbgPath, dbgLine, dbgMethod );
|
|
}
|
|
|
|
// If we're not doing any commit ops we can just use these.
|
|
static public Act create( Action act, string reason = "{unknown}", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = -1, [CallerMemberName] string dbgMethod = "" )
|
|
{
|
|
//ExtractValue( act );
|
|
|
|
return new Act( () => { act(); return CommitResults.Perfect; }, reason, dbgPath, dbgLine, dbgMethod );
|
|
}
|
|
|
|
public static Act create<T>( Action<T> act, T p0, string reason = "{unknown}", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = -1, [CallerMemberName] string dbgMethod = "" )
|
|
{
|
|
//ExtractValue( act );
|
|
|
|
//return new Act( act );
|
|
|
|
return new Act( () => { act( p0 ); return CommitResults.Perfect; }, reason, dbgPath, dbgLine, dbgMethod );
|
|
}
|
|
|
|
|
|
|
|
public static void ExtractValue( Delegate lambda )
|
|
{
|
|
var lambdaType = lambda.GetType();
|
|
|
|
var methodType = lambda.Method.GetType();
|
|
|
|
//Nothing here.
|
|
//var locals = lambda.Method.GetMethodBody().LocalVariables;
|
|
|
|
var targetType = lambda.Target?.GetType();
|
|
|
|
var fields = lambda.Method.DeclaringType?.GetFields
|
|
(
|
|
BindingFlags.NonPublic |
|
|
BindingFlags.Instance |
|
|
BindingFlags.Public |
|
|
BindingFlags.Static
|
|
);
|
|
//.SingleOrDefault(x => x.Name == variableName);
|
|
|
|
//return (TValue)field.GetValue( lambda.Target );
|
|
}
|
|
|
|
|
|
|
|
|
|
Func<CommitResults> m_act;
|
|
|
|
}
|
|
}
|