gpt4 book ai didi

.net - 如何从 VB.NET 中的匿名类型获取属性

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

我试图弄清楚当当前函数中未创建匿名类型时如何获取匿名类型对象的属性。

具体来说,我将 ASP.NET ListView 绑定(bind)到 LINQ 结果集,然后尝试处理 ItemDataBound 事件中的每个项目。

Option Explicit On
Option Strict On

Class MyPageClass

Private Sub Bind()
Dim items As ItemData = FetchItemData()

Dim groups = From s In items Group s By Key = s.GroupId Into Group _
Select GroupID = Key, GroupData = Group

' This works fine:
Dim groupId As Integer = groups(0).GroupID

lvGroups.DataSource = groups
lvGroups.DataBind()
End Sub

Private Sub lvGroups_ItemDataBound(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles lvGroups.ItemDataBound
If e.Item.ItemType = ListViewItemType.DataItem Then
Dim item As ListViewDataItem = DirectCast(e.Item, ListViewDataItem)
Dim groupData = item.DataItem ' This is the anonymous type {GroupId, GroupData}

' Next Line Doesn't Work
' Error: Option Strict disallows late binding
Dim groupId As Integer = groupData.GroupId

End If
End Sub

End Class

我需要在 lvGroups_ItemDataBound() 中做什么才能获取 item.DataItem.GroupId?

最佳答案

当您进行选择时,要么创建一个类来选择(选择新的 MyClass With { 属性分配此处 }),以便 MyClass 是您可以返回的实际物理类。或者,您可以使用 DataBinder 类,如下所示:

DataBinder.GetPropertyValue(item.DataItem, "GroupId", null);

我相信我用它来获取一个值,该值使用反射来检查底层类型。

关于.net - 如何从 VB.NET 中的匿名类型获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254313/

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