2009-08-26 8 views
1

私はうまくいけば、私の説明が明確化されます...その質問をするのは本当に方法がわからない:オブジェクトのインスタンスを、それ自身のクラス内の現在のインスタンス化されたオブジェクトに設定する方法はありますか?

私はクラスのパブリックメソッドを持っているが、ウィジェットのリストを受け取り、それらに変更を加えますWidgetを言います。ただし、メソッドを呼び出すウィジェットがそのリストにあることがあります。リスト内の項目の1つとして現在のオブジェクトを設定する方法はありますか?

例えば、ここで私がやろうとしているものです:

Public Class Widget() 
    '...other stuff' 
    Public Sub Update() 
     'do some stuff...' 
     For Each w As Widget In List(Of Widget) 
      'update widgets' 
      If w.ID = ID Then 
       Me = w '<----- here is what I am trying to do, but it wont let me' 
      End If 
     Next 
    End Sub 
End Class 
+0

静的メソッドにしますか? –

+0

は、残念ながら静的(共有)にすることはできません。それは継承されます。 – Jason

答えて

3

いいえ、あなたは何ですかあなたのオブジェクトは、参照している(親の)オブジェクトがリッスンし、そのオブジェクトを適切に置き換えるイベントを発生させます。

Public Class Widget 
    Public Event Replace As ReplaceReferenceEventHandler 

    Public Sub Update() 
     'do stuff 
     For Each w As Widget In List(Of Widget) 
      'update widgets' 
      If w.ID = ID Then 
       Replace(Me, w) 
      End If 
     Next 
    End Sub 
End Class 

Public Delegate Sub ReplaceReferenceEventHandler(ByVal sender As Object, ByVal replaceWith As Object) 
+0

興味深いアイデア! (実際に彼がやろうとしているものが提供されています) –

0

私は、コードが実行され、変更することができないクラスのインスタンスを参照します。 (this in C#) 変数のように使用することはできません。

+0

現在のインスタンスはC#でこれです。 – recursive

0

あなたは何をしようとしていますか?

つまり、現在のオブジェクトをそのリストのオブジェクトの1つに "変更"しようとしていますか?

他の人があなたの現在のオブジェクトに持っている参照を変更して、別のオブジェクトを参照するようにしたい場合は、それを行うことはできません。

また、すでに「私」であるオブジェクトを「Me」に割り当てようとしているようです。 これは何の目的ですか?

+0

(1つのフォームに関連する)1つのフォームのアクションが他のフォームに影響する可能性があるため、関連するすべてのフォームを重要な順序に更新していますが、そのページに関連するフォームを選択してリバインドしたいそれを形にする。 – Jason

1

使用するオブジェクトを戻して、コールサイトで参照を設定するだけです。

Public Class Widget() 
    '...other stuff' 
    Public Function Update() As Widget 
     'do some stuff...' 
     return SelectedWidget 
    End Sub 
End Class 

myWidget = myWidget.Update() 
関連する問題