-1

logITというクラスがあります

public class LogIT
{
    public string strMessage = string.Empty;
    public string strClassName = string.Empty;
    public string strMethodName = string.Empty;
    public LogIT()
    {
        strMethodName = new StackFrame(1).GetMethod().Name;
        strClassName = new StackFrame(1).GetMethod().DeclaringType.Name;
    }
}

「 product」という名前のLogITクラスを継承する別のクラス

public class Product : LogIT
{
    public Product()
    {

    }
    public void GetProduct()
    {

    }

    public void AddEditProduct()
    {

    }
}

これが私の主な方法です:

static void Main(string[] args)
    {
        Product objProduct = new Product();
        objProduct.GetProduct();
    }

私の質問は、製品クラスのGetProductメソッドを呼び出すときに、ロジットクラスコンストラクターが呼び出され、派生クラスのどのメソッドが呼び出されたかを認識したいということです。

それを達成する方法または同じための他の代替案を提案してください。ありがとう

4

1 に答える 1

1

これは私が今まで見た中で最も奇妙なコードです...

コンストラクターは、Product クラスをインスタンス化するときに 1 回だけ実行されます。

代わりに次のコードを使用してみてください。

public class LogIT
{
    public string strMessage = string.Empty;
    public string strClassName = string.Empty;
    public string strMethodName = string.Empty; 

    public void LogStackTrace()
    {
        strMethodName = new StackFrame(1).GetMethod().Name;
        strClassName = new StackFrame(1).GetMethod().DeclaringType.Name;
    }
}

public class Product : LogIT
{
    public Product()
    {

    }
    public void GetProduct()
    {
        base.LogStackTrace();
    }

    public void AddEditProduct()
    {

    }
}
于 2012-11-07T08:47:38.070 に答える