[C#] Condividere oggetti tra classi

martedì 10 febbraio 2009 - 15.37

liveforever81 Profilo | Junior Member

Salve a tutti, avrei bisogno di un'illuminazione;

Ho un totale di 3 classi: chiamiamole A, B e C.

La Classe B crea un nuovo oggetto della classe A, settando il valore di alcune proprietà di esso.
La Classe C dovrebbe poter leggere questi nuovi valori dell'oggetto di classe A (solo leggerli, senza modificarli).

Come fare?

Grazie a tutti!

Jeremy Profilo | Guru

Ciao liveforever

E' solo un discorso di visibilità del riferimento all'oggetto.
>La Classe B crea un nuovo oggetto della classe A, settando il valore di alcune proprietà di esso.
>La Classe C dovrebbe poter leggere questi nuovi valori dell'oggetto di classe A (solo leggerli, senza modificarli).

E' sufficiente, se ho capito bene il tuo problema, che dichiari public il riferimento all'istanza dell'oggetto A

Quindi, nella classe B:

Public clA as new ClasseA

In questo modo da C riesci ad accedere ad A attraverso il riferimento dichiarato in B

Spero di aver capito bene il tuo problema.
Facci sapere...
Ciao

liveforever81 Profilo | Junior Member

Uhm...allora, provo a spiegarmi meglio.

Ho la classe A che ha, supponiamo, 3 proprietà (prop1, prop2, prop3...supponiamole tutte stringhe).

Nella classe B dichiaro un nuovo oggetto di classe A:

ClasseA objA = new ClasseA();

Durante l'elaborazione del processo, la classe B esegue 3 "set" su objA.prop1, objA.prop2 e objA.prop3 in modo da settare il valore di queste 3 proprietà.
In tal modo la classe B "riempie" l'oggetto objA avendone settate tutte le proprietà.

Successivamente il controllo passa alla Classe C che, sulla base del valore delle proprietà settato dalla classe B su objA, deve fare altre cose.
Come faccio a fare riferimento, nella classe C, proprio a objA?

Ovviamente facendo in ClasseC una "new" dell'oggetto A esso mi ricrea un nuovo oggetto con le proprietà vuote...

:(

Jeremy Profilo | Guru

Ciao liveforever.

Credo che la risposta al tuo quesito stia nello scenario in cui ti trovi.
Cerco di spiegarmi:
Classe A B e C cosa sono?
Sono, per esmpio Treno,Aereo,Nave?.....oppure Treno,Sedile,Passeggero....

Ti sembrerà stupido come esempio, ma mi aiuterebbe a capire lo scenario in cui ti trovi.

Nel primo caso, avrai una classe MezzoDiTrasporto all'interno del quale avrai 3 oggetti al quale potresti accedere senza problemi

Nel secondo caso, a mio avviso, Passeggero dovrebbe essere una proprietà di Sedile le quali proprietà dovrebbero essere valorizzate da Treno(magari passando dei valori come parametri ad un metodo scritto in Sedile).

Insomma...prova a spiegare meglio lo scenzario....e luce sarà fatta.

Facci sapere...
Ciao

Teech Profilo | Expert

Scivo in VB ma il concetto è valido anche in C#

Partiamo dalle classi A e B:
Class A Public prop1 As String Public prop2 As String End Class Class B Public propA As A End Class

Presupponendo che per esistere una istanza di C deve esserci una istanza di B
Class C Private _classeB As B Sub New(ClasseB As B) _classeB=ClasseB End Sub Sub Prova Dim s As String=_classeB.propA.prop1 End Sub End Class

Questo si chiama incapsulamento se può aiutarti a cercare ulteriori informazioni in rete o su dei manuali... In ogni caso se hai dubbi chiedi pure...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5