vb.net - 无法设置属性的属性

标签 vb.net properties set setter

正如我所说,我在设置属性的属性时遇到了麻烦。假设我有一个代表交易的类。在我的类(class)中,我有一个代表另一个类(class)的属性,例如:

Public Class PersonRecord

    _myPerson = new Person()

    Public Property MyPerson as Person
    Get
        _myPerson = Person.GetAppropriatePerson(Me.PersonID)

        return _myPerson
    End Get

    Set
        _myPerson = value
    End Set
    End Property

因此,我基本上拥有一个属性,该属性具有获取合适人员的获取过滤器。问题是,当我想通过属性设置人的信息时,VB 似乎忽略了我什至做了这件事,例如:

Me.myPersonRecord.Person.Name = "Some Name"

但是当我对此进行监视时,在设置属性之后,我的值并没有改变。我对这种行为感到困惑。我做错了什么吗?谢谢!

最佳答案

我不知道这是不是复制 n 粘贴错误,但您似乎每次都在属性的 Get 部分覆盖 _myPerson。这很可能会导致您的“某些名称”被覆盖 :-)

编辑 做吧,codeape 在我之前说了同样的话 :-)

像这样对属性进行惰性初始化的常见模式是执行如下操作,它会在覆盖对象之前检查对象是否为 null。

Public Property MyPerson as Person
Get
    If _myPerson Is Nothing Then
        _myPerson = Person.GetAppropriatePerson(Me.PersonID)
    End If
    return _myPerson
End Get

您必须将 _myPerson 初始化更改为直接的 dim _myPerson as Person,而不是 dim _myPerson as New Person() 也是

关于vb.net - 无法设置属性的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1027289/

相关文章:

asp.net - 如何解析来自 vb.net 中帖子的 xml 响应

VB.NET 管理对象帮助

jquery - 登录成功后立即获取用户名和身份

c# - 静态属性如何在 asp.net 环境中工作?

java - 如何使用 BeanUtils.copyProperties?

objective-c - BOOL 的@property setter

java - 试图设置狗尾部的长度,但由于某种原因它不起作用

javascript - 如何使用 Google 图表 API 在 X 轴上使用日期?

Redis 集中的正则表达式

python - 根据python中的逻辑数组设置数组的值