gpt4 book ai didi

vb.net - 仅反射(reflect) VB.NET 上派生类的子属性

转载 作者:行者123 更新时间:2023-12-02 11:38:02 26 4
gpt4 key购买 nike

我正在尝试使用反射序列化从另一个类继承的类的属性,但我只想序列化子类的属性,而不是父类的属性。我怎样才能做到这一点?

这就是我正在做的事情,不幸的是它也获取了父类的所有属性,正如人们所期望的:

    Public Function SaveData() As System.Collections.Generic.List(Of System.Xml.Linq.XElement) Implements Interfaces.ICustomXMLSerialization.SaveData

Dim elements As New List(Of System.Xml.Linq.XElement)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

With elements

Dim props As PropertyInfo() = Me.GetType.GetProperties()
For Each prop As PropertyInfo In props
If TypeOf Me.GetType.GetProperty(prop.Name).PropertyType Is IList Then
.Add(New XElement(prop.Name, DWSIM.App.ArrayToString(Me.GetType.GetProperty(prop.Name).GetValue(Me, Nothing), ci)))
ElseIf TypeOf Me.GetType.GetProperty(prop.Name).GetValue(Me, Nothing) Is Double Then
.Add(New XElement(prop.Name, Double.Parse(Me.GetType.GetProperty(prop.Name).GetValue(Me, Nothing)).ToString(ci)))
Else
.Add(New XElement(prop.Name, Me.GetType.GetProperty(prop.Name).GetValue(Me, Nothing)))
End If
Next

End With

Return elements

End Function

提前致谢,丹尼尔

最佳答案

您需要将 BindingFlags.DeclaredOnly 指定为 GetProperties 调用的参数。

不过,使用这些标志时经常会遇到一些问题,因此可能需要进行一些实验才能找到您需要的标志的确切组合。枚举的 MSDN 描述是 here .

关于vb.net - 仅反射(reflect) VB.NET 上派生类的子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13050064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com