linq을 사용하여 개체/클래스의 속성 목록을 얻는 방법은 무엇입니까?LINQ 클래스 속성 가져 오기
public class Person {
public string Name { get; set; }
public string Age { get; set; }
public string Gender { get; set; }
}
나는 { "이름", "나이", "성별"}을 원합니다.
linq을 사용하여 개체/클래스의 속성 목록을 얻는 방법은 무엇입니까?LINQ 클래스 속성 가져 오기
public class Person {
public string Name { get; set; }
public string Age { get; set; }
public string Gender { get; set; }
}
나는 { "이름", "나이", "성별"}을 원합니다.
을 언급 한 이전의 주석으로, 반사는이 정보를 얻기 위해 사용해야하는 도구입니다. 당신은 반사 생각 될 수
System.Type type = typeof(Person);
System.Reflection.PropertyInfo[] properties = type.GetProperties();
foreach (System.Reflection.PropertyInfo property in properties)
Console.WriteLine(property.Name);
형제 감사합니다! (와이) – lexeRoy
typeof(Person).GetProperty("Name")
리플렉션을 사용하여 개별 속성을 가져올 수 있습니다. 자세한 내용은 here을 참조하십시오.
리플렉션을 사용해야합니다. 다음은 많은 프로젝트에서 사용한 기능입니다.
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)
:
다음은 검색하고 hypthetical "사람"클래스에서 속성 이름을 표시하는 작은 예제 프로그램입니다. - http://msdn.microsoft.com/en-us/library/ms173183(v=vs.80).aspx –