从继承它的类中获取类名

3
我有一个像这样的类
public class BaseClass
    {
        public string Request { get; set;}
    }

我有一个类,就像这样:

public class ExtendClass : BaseClass
{

}

实际上,属性Request将始终设置为ExtendClass的名称。因此,实际上将是Request="ExtendClass"

我有很多类扩展了BaseClass。我知道我只能将字符串传递给它,但是否可能做到这一点?


1
请详细说明问题。您是否希望每次创建扩展类时,它都应设置Request="ExtendClass"? - Amit
1
完全不清楚你在寻找什么,你想在任何继承自基类的子类被调用时设置Request属性,就像当调用ExtendedClass时,你应该能够设置Request属性。你可以在视图中使用构造函数来实现这一点。 - Mrinal Kamboj
1
@blueboyz,Object.GetType 方法对你无效吗? - IronGeek
2个回答

7
你可以使用 object.GetType,它将始终返回层次结构中最上面的类型(即最后一个派生类):
public string Request
{
    get
    {
        return this.GetType().Name;
    }
}

Name 方法可返回类型的简短名称,不包括命名空间。如果您需要同时获取命名空间和类型名称,应使用FullName 方法。


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"; } }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接