我該如何檢查自定義對象中的每個屬性?它不是一個集合對象,但是對於非集合對象是否有這樣的東西?如何遍歷自定義vb.net對象的每個屬性?
For Each entry as String in myObject
' Do stuff here...
Next
我的對象中有字符串,整數和布爾值屬性。
我該如何檢查自定義對象中的每個屬性?它不是一個集合對象,但是對於非集合對象是否有這樣的東西?如何遍歷自定義vb.net對象的每個屬性?
For Each entry as String in myObject
' Do stuff here...
Next
我的對象中有字符串,整數和布爾值屬性。
通過使用反射,你可以做到這一點。在C#中看起來像這樣;
PropertyInfo[] propertyInfo = myobject.GetType().GetProperties();
增加了VB.Net翻譯:
Dim info() As PropertyInfo = myobject.GetType().GetProperties()
您可以使用反射...與反思,你可以檢查一類的每一個成員(A型),proeprties,方法, contructors,田野等。
using System.Reflection;
Type type = job.GetType();
foreach (MemberInfo memInfo in type.GetMembers())
if (memInfo is PropertyInfo)
{
// Do Something
}
您可以使用的System.Reflection namespac e查詢有關對象類型的信息。
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
請注意,建議您不要在代碼中使用此方法代替集合。反射是一個性能密集的事情,應該明智地使用。
的System.Reflection是 「重權重」,我總是實現打火機方法第一..
// 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
哪裏每個條目內的價值? – Anders 2008-11-24 16:10:28
有一個名爲propertyInfo.GetValue()的方法。 – 2008-11-25 10:43:06