1

linq を使用してオブジェクト/クラスのプロパティのリストを取得するにはどうすればよいですか??

public class Person  { 
public string Name   { get; set; } 
public string Age    { get; set; } 
public string Gender { get; set; } 
}

{"名前","年齢","性別"}にしたい。

4

3 に答える 3

3

以前のコメンターが述べたように、リフレクションは、この情報を取得するために使用する必要があるツールです。

以下は、架空の「Person」クラスからプロパティ名を取得して表示する小さなサンプル プログラムです。

System.Type type = typeof(Person);
System.Reflection.PropertyInfo[] properties = type.GetProperties();

foreach (System.Reflection.PropertyInfo property in properties)
    Console.WriteLine(property.Name);
于 2013-01-12T06:42:43.207 に答える
1

リフレクションを使用する必要があります。これは、私が多くのプロジェクトで使用した機能です。

private List<MemberInfo> GetMembers(Type objectType, MemberTypes memberType)
{
    List<MemberInfo> members = new List<MemberInfo>();

    Assembly asm = Assembly.GetAssembly(objectType);
    foreach (Type t in asm.GetExportedTypes().Where((Type testType) => object.ReferenceEquals(testType, objectType))) {
        foreach (MemberInfo mi in t.GetMembers().Where((MemberInfo member) => member.MemberType == memberType)) {
            switch (memberType) {
                case MemberTypes.Property:
                    members.Add(mi);
                    break;
                case MemberTypes.Method:
                    bool isValid = true;

                    foreach (PropertyInfo pi in t.GetProperties()) {
                        if ((pi.CanWrite && pi.GetSetMethod().Name == mi.Name) || (pi.CanRead && pi.GetGetMethod().Name == mi.Name)) {
                            isValid = false;
                            break;
                        }
                    }


                    if (isValid)
                        members.Add(mi);
                    break;
            }
        }
    }

    return members.OrderBy((MemberInfo mi) => mi.Name).ToList();
}

それを呼び出すには、たとえば次のように使用できます。

var properties = GetMembers(typeof(myObject), MemberTypes.Property)
于 2013-01-12T06:39:01.757 に答える
0
typeof(Person).GetProperty("Name")

Reflection を使用して個々のプロパティを取得できます。詳細については、こちらをお読みください

于 2013-01-12T06:33:58.703 に答える