我需要編寫簡單的應用,得到的類名(假設類出現在應用程序的AppDomain),並打印到控制檯如何從任何.net類獲取所有公共屬性和方法?
all the public properties
values of each properties
all the method in the class
我需要編寫簡單的應用,得到的類名(假設類出現在應用程序的AppDomain),並打印到控制檯如何從任何.net類獲取所有公共屬性和方法?
all the public properties
values of each properties
all the method in the class
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);
}
您可以通過使用PropertyInfo
對象的GetValue
方法是通過調用了得到它GetProperties
方法
foreach(PropertyInfo pi in myObj.GetType().GetProperties())
{
var value = pi.GetValue(myObj , null);
}
PropertyInfo
對象包含檢索您想了解像名perperty的信息很多方法,是隻讀的..等
這裏是代碼。 。 。
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!");
}
}
你看着Type.GetProperties和Type.GetMethods?如果是這樣,你遇到了什麼問題? –
作業?如果是這樣,請將其標記爲。不管...你有什麼嘗試?它似乎是一個快速搜索「反思」和「.net」會回答你的問題。 – Robaticus
我看着Type.GetPropetries,但我怎麼知道什麼是在運行時的類實例中的值,當我知道該類是對象,並不能調用'獲取'值 – Yanshof