-4

クラス名を取得する単純なアプリケーションを作成し (クラスがアプリケーション AppDomain に表示されると仮定)、コンソールに出力する必要があります

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

3 に答える 3

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);
}
于 2012-05-17T15:23:43.390 に答える
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!");
    }


}
于 2012-05-17T15:19:16.810 に答える
1

メソッドを呼び出して取得したオブジェクトGetValueのメソッドを使用して取得できますPropertyInfoGetProperties

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

PropertyInfoオブジェクトには、名前のようなパーパーティについて必要な情報を取得する多くのメソッドが含まれています。それは読み取り専用ですか..など

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

于 2012-05-17T15:17:09.487 に答える