如何从任何 .net 类获取所有公共属性和方法

本文关键字:属性 方法 获取 任何 net | 更新日期: 2023-09-27 18:34:25

>我需要编写获取类名的简单应用程序(假设该类出现在应用程序AppDomain中)并打印到控制台

 all the public properties 
 values of each properties 
 all the method in the class 

如何从任何 .net 类获取所有公共属性和方法

var p = GetProperties(obj);
var m = GetMethods(obj);    

-

public Dictionary<string,object> GetProperties<T>(T obj)
{
    return typeof(T).GetProperties().ToDictionary(p=>p.Name,p=>p.GetValue(obj,null));
}
public MethodInfo[] GetMethods<T>(T obj)
{
    return typeof(T).GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
}
您可以使用

GetValue通过调用该方法获得PropertyInfo对象的方法获取它GetProperties

foreach(PropertyInfo pi in myObj.GetType().GetProperties())
{
     var value = pi.GetValue(myObj , null);
}

PropertyInfo对象包含许多方法,这些方法可以检索您想要的有关perperty之类的名称的信息,它是只读的..等

http://msdn.microsoft.com/en-us/library/b05d59ty.aspx

这是代码。 .

void Main()
{
    Yanshoff y = new Yanshoff();
    y.MyValue = "this is my value!";
    y.GetType().GetProperties().ToList().ForEach(prop=>
    {
        var val = prop.GetValue(y, null);
        System.Console.WriteLine("{0} : {1}", prop.Name, val);
    });
    y.GetType().GetMethods().ToList().ForEach(meth=>
    {
        System.Console.WriteLine(meth.Name);
    });
}
// Define other methods and classes here
public class Yanshoff
{
    public string MyValue {get; set;}
    public void MyMethod()
    {
         System.Console.WriteLine("I'm a Method!");
    }

}