正如我所说,我在设置属性的属性时遇到了麻烦。假设我有一个代表交易的类。在我的类(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/