C#/.NET应用程序编程开发中如何获取当前类的类名?

C#开发 作者: Rector 21 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

比如,在C#/.NET应用程序编程开发中有一个名为Customer的类,其中有一个方法GetClassName()需要获取当前类的类名,应该如何实现呢?

Customer.cs:

public class Customer
{
  public int Id {get;set;}
  public string GetClassName(){
    string className ="";
    // get class name here...
    return className;
  }
}

方案一

如果是实例(非静态)的方法,则可以首先使用GetType()获取当前类对应的实例的类型,再通过类型获取当前实例对象对应的类的名称,如(完整示例):

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
  public static void Main()
  {
    var customer = new Customer();
    Console.WriteLine("customer class name: {0}",customer.GetClassName());
  }

}

public class Customer
{
  public int Id {get;set;}
  public string GetClassName(){
    var className ="";
    var type = this.GetType();
    className = type.Name;
    return className;
  }
}

输出结果为:

customer class name: Customer

方案二

在C#/.NET应用程序开发中,除了使用实例的GetType()外,也可以使用typeof()来获取对象的类型,如:

var className = typeof(Customer).Name;

方案三

如里你是基于C# 6.0及以上版本,还可以使用nameof()方法来快捷地获取类的名称,如:

var className = nameof(Customer);

方案四

如果是静态方法,则可以使用MethodBase类中的GetCurrentMethod()获取当前类的名称,如

string className = MethodBase.GetCurrentMethod().DeclaringType.Name;

(完整示例):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

public class Program
{
  public static void Main()
  {
    Console.WriteLine("customer class name:{0}",Customer.GetClassName());
  }

}

public class Customer
{
  public int Id {get;set;}
  public static string GetClassName(){
    string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
    return className;
  }
}

温馨提示:本文标注有(完整示例)的示例代码可以直接在try.dot.net运行。

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#/.NET应用程序编程开发中如何获取当前类的类名?

发布于: 2019-06-14 16:32:19
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册