【问题标题】:c# - write class name,class methods and class properties to text filec# - 将类名、类方法和类属性写入文本文件
【发布时间】:2025-12-13 14:15:02
【问题描述】:

就像标题一样。如何获取类名、类属性和类方法?有一个简单的方法吗?我正在尝试构建绘制(使用乳胶)类图的程序 - 这就是我需要类名、属性和方法的原因。我必须使用正则表达式来解析类文件并获取所有内容(属性、方法)还是有更简单的方法? ;)

也许你对如何实现这一点有一些建议。

【问题讨论】:

  • 您将不得不使用反射并从类中检索名称

标签: c# asp.net class properties methods


【解决方案1】:

反射。从 Type 实例开始,从 typeof(T)obj.GetType() 开始 - 它为您提供运行时类型所需的一切,例如:

Console.WriteLine(type.FullName);
foreach(var prop in type.GetProperties()) {
    Console.WriteLine("{0}, {1}", prop.Name, prop.PropertyType.Name);
}

事件、字段、构造函数、方法等都有类似的方法

【讨论】:

  • 这无疑是要走的路。如果您之前从未接触过反射,它可能看起来有点像巫毒教,但它很快成为您的第二天性,并开辟了 .NET 中解决问题的全新途径 - 包括在处理包含以下内容的对象时消除重复代码很多方法/属性。
  • 谢谢 :)。但是如何从 .cs 文件中获取它。我不想调用这个类的一个实例——我得到的只是 .cs 文件的路径。如何传递 .cs 文件位置,然后从中获取方法、道具和其他信息?
  • 没有机会获得 .cs 文件?引用一个类的唯一方法是引用它的 dll 文件?但是编译后哪里有dll文件呢?
  • @born2fr4g 如果您正在从 .cs 进行处理,那么......您要么必须解析文件,要么可能需要解析 .NET 4.5 中的新“编译器即服务”内容这是怎么回事?那应该(据我了解)具有旨在帮助解决此问题的代码。但我还没玩过。
  • 用正则表达式解析文件还不错;)。谢谢你的意见。还有一个一般性问题:从项目文件中创建我需要的类图? .cs 文件(所有类)这就是我所需要的?或者我需要其他文件(如 dll 或其他什么?)我在谈论 ASP.NET 网站。