2012-05-17 55 views
-4

我需要編寫簡單的應用,得到的類名(假設類出現在應用程序的AppDomain),並打印到控制檯如何從任何.net類獲取所有公共屬性和方法?

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

你看着Type.GetProperties和Type.GetMethods?如果是這樣,你遇到了什麼問題? –

+0

作業?如果是這樣,請將其標記爲。不管...你有什麼嘗試?它似乎是一個快速搜索「反思」和「.net」會回答你的問題。 – Robaticus

+0

我看着Type.GetPropetries,但我怎麼知道什麼是在運行時的類實例中的值,當我知道該類是對象,並不能調用'獲取'值 – Yanshof

回答

3
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); 
} 
1

您可以通過使用PropertyInfo對象的GetValue方法是通過調用了得到它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

1

這裏是代碼。 。 。

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


} 
相關問題