반응형
사용자 지정 vb.net 개체의 각 속성을 반복하는 방법은 무엇입니까?
사용자 지정 개체의 각 속성을 통과하려면 어떻게 해야 합니까?컬렉션 개체가 아닌데 컬렉션이 아닌 개체에 이런 것이 있나요?
For Each entry as String in myObject
' Do stuff here...
Next
내 개체에 문자열, 정수 및 부울 속성이 있습니다.
반사를 이용함으로써 그렇게 할 수 있습니다.C#에서는 그렇게 보입니다;
PropertyInfo[] propertyInfo = myobject.GetType().GetProperties();
VB가 추가되었습니다.순번역:
Dim info() As PropertyInfo = myobject.GetType().GetProperties()
시스템을 사용할 수 있습니다.개체 유형에 대한 정보를 쿼리하는 반사 네임스페이스입니다.
For Each p As System.Reflection.PropertyInfo In obj.GetType().GetProperties()
If p.CanRead Then
Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj, Nothing))
End If
Next
코드에서 컬렉션 대신 이 방법을 사용하는 것은 권장되지 않습니다.반성은 성과 집약적인 것이며 현명하게 사용되어야 합니다.
시스템. 반사는 "헤비웨이트"입니다. 저는 항상 더 가벼운 방법을 먼저 구현합니다.
//C#
if (item is IEnumerable) {
foreach (object o in item as IEnumerable) {
//do function
}
} else {
foreach (System.Reflection.PropertyInfo p in obj.GetType().GetProperties()) {
if (p.CanRead) {
Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj, null)); //possible function
}
}
}
'VB.Net'
If TypeOf item Is IEnumerable Then
For Each o As Object In TryCast(item, IEnumerable)
'Do Function
Next
Else
For Each p As System.Reflection.PropertyInfo In obj.GetType().GetProperties()
If p.CanRead Then
Console.WriteLine("{0}: {1}", p.Name, p.GetValue(obj, Nothing)) 'possible function
End If
Next
End If
반사를 사용할 수 있습니다...Reflection을 사용하여 클래스(유형)의 모든 멤버, 속성, 메서드, 생성자, 필드 등을 검사할 수 있습니다.
using System.Reflection;
Type type = job.GetType();
foreach ( MemberInfo memInfo in type.GetMembers() )
if (memInfo is PropertyInfo)
{
// Do Something
}
언급URL : https://stackoverflow.com/questions/314426/how-to-iterate-through-each-property-of-a-custom-vb-net-object
반응형
'programing' 카테고리의 다른 글
Ubuntu에서 nodejs, npm 및 노드를 완전히 제거하려면 어떻게 해야 합니까? (0) | 2023.05.09 |
---|---|
파일 기록을 중단하지 않고 두 Git 저장소 병합 (0) | 2023.05.09 |
동일한 컬렉션에 서로 다른 필터가 있는 WPF 다중 컬렉션 보기 (0) | 2023.05.09 |
'any'를 사용해도 괜찮습니까?배열이 비어 있지 않은지 확인하시겠습니까? (0) | 2023.05.09 |
조사할 가치가 있는 .NET 종속성 주입 프레임워크는 무엇입니까? (0) | 2023.05.04 |