引用相同对象类型的另一个对象实例的类对象属性

世界标准委员会

我有一个看起来像这样的类对象:

Public Class item
    Public Property ID
    Public Property Name
    Public Property Description
    Public Property Type
    Public Property Alias
End Class

我目前将它们存储为这样的字典:

Public Class Items

    Public ReadOnly dict Dictionary(Of String, item) From {
        {"A", New item With {.Name = "Object A", .Description = "Object A description"}},
        {"B", New item With {.Name = "Object B", .Description = "Object B description"}},
        {"C", New item With {.Alias = "A"}}
    }

    Public Function GetItem(ByVal ID As String) As item
        Return If(dict.ContainsKey(ID), idct.Item(ID), Nothing)
    End Function

End Class

复杂性在于,有时anitem本身将不会具有任何属性,而是具有一个.Alias属性,属性表示“我的所有属性都item与此ID相同,请改为检查该对象”。

我应该如何编写我的类对象,item以便此代码返回“对象A”:

Dim newItem As item = GetItem("C")
Debug.WriteLine(item.Name)

对象C是对象A的别名,因此我应该为对象A返回一些属性(并非总是所有属性)Nothing

解决此问题的方法是将以下函数添加到Items类中:

Public Function GetItemDescription(ByVal ID As String) As String
    If dict.ContainsKey(ID) Then
        If dict.Item(ID).Description = "" Then
            Return GetItemDescription(dict.Item(ID).Alias)
        Else
            Return dict.Item(ID).Description
        End If
    Else
        Return ""
    End If
End Function

但这不像是正确的方法,因为我不得不反复调用一组Items.GetPropertyXYZ函数,而不是直接引用该对象(例如item.Description,必须GetItemDescription("C")

我的解决方案是否可以从设计角度接受,还是有更好的方法来实现?

用户名

尝试这个:

Public Function GetItem(ByVal [alias] As String) As item
    Return dict.Where(Function(a) a.Key = [alias]).Select(Function(b) b.Value).FirstOrDefault
End Function

编辑1

当然,它返回“ C”项是因为它是错误的。抱歉。

此作品有效(已测试):

Public Function GetItem(ByVal ID As String) As item
    Dim itm As item = dict.Where(Function(a) a.Key = ID).Select(Function(b) b.Value).FirstOrDefault

    Return If(itm IsNot Nothing, If(itm.Alias IsNot Nothing, dict(itm.Alias), itm), Nothing)
End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

尝试创建相同对象类型的两个实例,但最终得到两个引用相同对象的变量

来自分类Dev

测试一个对象是否是另一个实例类型的子类

来自分类Dev

从相同类型的另一个对象更新Entity Framework对象

来自分类Dev

将对象实例转换为另一个实例的引用?

来自分类Dev

Java:将属性从一个对象实例复制到另一个对象实例?

来自分类Dev

如何创建一个类,使其对象之一与VB中另一个类的类型相同?

来自分类Dev

使用另一个对象的方法实例化一个抽象类?

来自分类Dev

实例化一个对象的类型取决于另一个对象的类型

来自分类Dev

如果我将一个对象的实例传递给另一个类,它是否仍被视为该对象的相同实例?

来自分类Dev

另一个对象内部的引用对象实例

来自分类Dev

如何从另一个对象的对象引用变量?

来自分类Dev

减少包含另一个数组的对象数组,按相同对象的名称进行减少

来自分类Dev

如果我有一个对象是另一个对象的属性,如何从该属性对象引用主对象?

来自分类Dev

在另一个内部绑定一个类的对象的属性不起作用

来自分类Dev

从相同类型的另一个对象更新Entity Framework对象

来自分类Dev

如何创建一个类,使其对象之一与VB中另一个类的类型相同?

来自分类Dev

试图将一个对象的实例传递给另一个类

来自分类Dev

使用另一个对象的方法实例化一个抽象类?

来自分类Dev

从另一个类C ++获取对象的属性

来自分类Dev

用与对象类型相同的getter / setter命名另一个对象的属性的对象

来自分类Dev

如何更改引用另一个对象属性的对象属性的值?

来自分类Dev

基类是对另一个对象的引用

来自分类Dev

Geb/Groovy:当使用“to”选项引用时,页面对象类被视为另一个属性

来自分类Dev

访问另一个对象内的对象属性

来自分类Dev

C# 对象引用另一个对象的属性

来自分类Dev

如何订阅rxjs中另一个对象中引用的对象的属性更改

来自分类Dev

将类对象实例作为参数从 main() 传递给另一个类对象实例

来自分类Dev

如何链接到类类型创建另一个类类型的对象

来自分类Dev

如何在C#中获取另一个对象的属性的对象类型?

Related 相关文章

  1. 1

    尝试创建相同对象类型的两个实例,但最终得到两个引用相同对象的变量

  2. 2

    测试一个对象是否是另一个实例类型的子类

  3. 3

    从相同类型的另一个对象更新Entity Framework对象

  4. 4

    将对象实例转换为另一个实例的引用?

  5. 5

    Java:将属性从一个对象实例复制到另一个对象实例?

  6. 6

    如何创建一个类,使其对象之一与VB中另一个类的类型相同?

  7. 7

    使用另一个对象的方法实例化一个抽象类?

  8. 8

    实例化一个对象的类型取决于另一个对象的类型

  9. 9

    如果我将一个对象的实例传递给另一个类,它是否仍被视为该对象的相同实例?

  10. 10

    另一个对象内部的引用对象实例

  11. 11

    如何从另一个对象的对象引用变量?

  12. 12

    减少包含另一个数组的对象数组,按相同对象的名称进行减少

  13. 13

    如果我有一个对象是另一个对象的属性,如何从该属性对象引用主对象?

  14. 14

    在另一个内部绑定一个类的对象的属性不起作用

  15. 15

    从相同类型的另一个对象更新Entity Framework对象

  16. 16

    如何创建一个类,使其对象之一与VB中另一个类的类型相同?

  17. 17

    试图将一个对象的实例传递给另一个类

  18. 18

    使用另一个对象的方法实例化一个抽象类?

  19. 19

    从另一个类C ++获取对象的属性

  20. 20

    用与对象类型相同的getter / setter命名另一个对象的属性的对象

  21. 21

    如何更改引用另一个对象属性的对象属性的值?

  22. 22

    基类是对另一个对象的引用

  23. 23

    Geb/Groovy:当使用“to”选项引用时,页面对象类被视为另一个属性

  24. 24

    访问另一个对象内的对象属性

  25. 25

    C# 对象引用另一个对象的属性

  26. 26

    如何订阅rxjs中另一个对象中引用的对象的属性更改

  27. 27

    将类对象实例作为参数从 main() 传递给另一个类对象实例

  28. 28

    如何链接到类类型创建另一个类类型的对象

  29. 29

    如何在C#中获取另一个对象的属性的对象类型?

热门标签

归档