2017-09-26 1 views
0

J'essaie de donner à une classe un objet qui n'a aucun contrôle sur elle. Cela signifie que si la classe principale change l'objet, la classe que j'ai créée a aussi les changements.C# Donne une valeur interne au constructeur

Exemple:

class main 
{ 
    private string test; 

    public main() 
    { 
     var Test = new Test(test); 
    } 
} 

Si je change maintenant la chaîne « test » le test d'objet devrait également voir la chaîne de changement. Est-ce possible?

+0

Ce que vous attendiez ??????? – iamsankalp89

+1

ajoute un événement au setter de la chaîne de test et souscrit dans l'objet de test à mettre à jour lorsqu'il est levé. – rmjoia

+1

cela ne sonne pas comme un bon design. Qu'essayez-vous de faire – Timeless

Répondre

4

Il est possible de faire si vous au lieu de ficelle utiliser une classe spécialement conçue:

public class SharedData 
{ 
    public string Test {get;set;} 
} 

Ensuite, si vous avez un objet de type SharedData au lieu de chaîne, ils partageront la valeur. Les chaînes sont immuables en C#, donc vous n'aurez pas la même référence de chaîne dans les deux classes.

class main 
{ 
    private SharedData test = new ShareData(); 

    public main() 
    { 
     var Test = new Test(test); 
    } 
} 

P.S. C'est une question différente si c'est un bon design ou non. Il est difficile de répondre en fonction des exemples que vous avez fournis. J'éviterais une telle conception si possible et plutôt passer la chaîne comme paramètre où vous avez besoin d'avoir moins d'état. Mais comme toujours, cela dépend et il peut y avoir des cas où ce que vous faites est bénéfique, mais vous pouvez envisager de changer le design pour le rendre plus facile.