プロが教えるわが家の防犯対策術!

C#3.5を使用しています。
BaseClassはStackTraceを使ってクラス名を取得できるメソッドを持っています。
それを継承したDerivedClass側でそのクラス名「DerivedClass」を取得したいのですが、
次のようなやり方では「BaseClass」が取得されてしまいます・・・
あくまでBaseClass側に記述したメソッドのままで、DerivedClass側のクラス名を取得するには
どのようにしたら良いのでしょうか?

public class BaseClass
{
public string className;
public string ClassName
{
get
{
if (className == null)
{
StackTrace st = new StackTrace(false);
StackFrame sf = st.GetFrame(0);
className = sf.GetMethod().ReflectedType.Name;
}
return className;
}
set { className = value; }
}
}

public class DerivedClass : BaseClass
{
}

var c = new DerivedClass();
MessageBox.Show(c.ClassName);// BaseClassと表示される

A 回答 (2件)

こんなのどうですか?



class Program
{
public class BaseClass
{

}

public class DerivedClass : BaseClass
{

}

static void Main(string[] args)
{
var c = new DerivedClass();
Console.WriteLine(c.GetType().Name);
}
}
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
なるほど、別にStackTraceを使わなくても
そのやり方で取得できたんですね・・・

お礼日時:2009/08/10 17:51

ん~, 見た感じだと


DerivedClass のコンストラクタで ClassName を設定する
ことができるような気がするんだけど....
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
なるべくDerivedClass側には記述せずにクラス名を取得したいと思ってます。

お礼日時:2009/08/10 17:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!