呼び出し元のメソッドの名前を取得し、その結果に基づいてコードを実行することはできますか?
以下に、データベースの CRUD 操作に使用される 2 つのメソッドを示します。1 つはオブジェクトをデータベースに追加し、もう 1 つは更新します。どちらも、オペレーションの統計レポートを含むオブジェクトを返します。
特定の条件下で、Update メソッド内のオペレーション stat オブジェクトの pkey フィールドをわざわざ更新する必要はありません (それが stat-obj を Add メソッドに返す場合)。
public OperationStat Add(object obj)
{
// Contains operation status data.
OperationStat op = new OperationStat();
op.PrimaryKey = pkey.newkey();
// Record to update
Person pete = new Person();
// call update method.
op = this.Update(pete);
}
public OperationStat Update(object obj)
{
OperationStat op = new OperationStat();
string callmethod = "Add";
// Get stacktrace.
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
if(methodBase.Name != callmethod)
{
// create new primary key for status.
op.Primarykey = pkey.newkey();
}
// fill operation stat object with details
return op;
}