从扩展它的类中获取类名

时间:2015-05-20 04:53:45

标签: c#

我有一个这样的课程

public class BaseClass
    {
        public string Request { get; set;}
    }

我有这样的课程:

public class ExtendClass : BaseClass
{

}

实际上,属性Request将始终使用ExtendClass的名称进行设置。所以它实际上是Request="ExtendClass"

我有许多扩展BaseClass的课程。我知道我可以将字符串传递给它,但是可以这样做吗?

2 个答案:

答案 0 :(得分:7)

你可以使用object.GetType,它总是会在层次结构的顶层返回类型(所以最后一个派生类):

public string Request
{
    get
    {
        return this.GetType().Name;
    }
}

Name将返回短类型名称,不带名称空间。如果您也想要,也应使用FullName

答案 1 :(得分:2)

您有多种选择。例如,您可以使用反射:

public string Request { get {return this.GetType().Name; }}

或者你可以使用抽象属性使它更明确(这样你不仅可以指定类名):

public abstract class BaseClass
{
    public abstract string Request { get; }
}
class ExtendClass : BaseClass
{
    public override string Request { get {return "ExtendClass"; } }
}