2010-09-10 5 views
1

Disons donc que je classe 1Comment conserver une référence à une propriété de classe mise à jour?

public Class1 
{ 
    Class2 myClass2; 

    public Class1() 
    { 
     myClass2 = new Class2(); 
    } 

    public SomeObject anObject 
    { 
     get; 
     set; 
    } 
} 

et Classe2

public Class2 
{ 
    private SomeObject _myObject; 
    public SomeObject MyObject 
    { 
     get{ return _myObject;} 
     set{ _myObject = value; } 
    } 

    public void DoStuffToObject() 
    { 
     _myObject.Property = newValue; 
    } 
} 

Comment puis-je conserver _myObject en Classe2 les mêmes que anObject dans Class1 si je mets anObject égal à un autre objet. Donc, si je change anObject dans Class1 _myObject, est-ce que les changements de classe 2 aussi? Est-ce une bonne solution:

(en Class1)

private SomeObject _anObject; 
    public SomeObject anObject 
    { 
     get{ return _anObject; } 
     set{ _anObject = value; 
      if(myClass2 != null) 
      myClass2.MyObject = value; 
     } 

    } 

Il semble un peu étranger, mais sens que vous ne pouvez pas passer une propriété par référence Je suis un peu perplexe.

Merci

+1

Cette conception semble peu précis. Il peut y avoir plusieurs instances de chaque. myClass2.MyObject est une référence illégale à une propriété membre. Vos classes doivent être décomposées de telle sorte qu'elles n'aient pas besoin de s'appuyer sur les internes d'autres classes. – recursive

Répondre

1
public Class1 
{ 
    private Class2 myClass2; 

    public Class1() 
    { 
     myClass2 = new Class2(); 
    } 

    public SomeObject anObject 
    { 
     get { return myClass2.MyObject; } 
     set { myClass2.MyObject = value; } 
    } 
} 
+0

Cela a du sens. :) – Justin

Questions connexes