Zivjo,
imam eno bolj eksoticno vprasanje. Ali obstaja moznost, da class/objekt ugotovi, kdaj nekdo dostopa do njegovega propertija....
Recimo:
class MojRazred
{
onPropertyAccessEvent()
{
return "42";
}
}
main()
{
MojRazred obj = new MojRazred();
Console.WriteLine(obj.Prop1);
Console.WriteLine(obj.SoajxvswjsdfD);
.....
}
... in bi mi vsi property vrnili doloceno vrednost, ceprav niso definirani ?
lp
Avtor: rocco, objavljeno na portalu SloDug.si (Arhiv)
lemmy - četrtek, 29. marec 2007
rocco: MojRazred obj = new MojRazred(); Console.WriteLine(obj.Prop1); Console.WriteLine(obj.SoajxvswjsdfD);Na tak nacin gotovo NE, ker te prevajalnik ne bo nikamor spustil. Naceloma bi lahko spisal metodo, ki s pomocjo Reflection-a skusa pridobiti vrednost, vendar si v tem primeru na stringih (torej, ne podajas vec obj.Prop1, ampak GetValue(obj, "Prop1"). Meni osebno bi slo v takem primeru (se opravicujem) na kozlanje, ker se bo enkrat nasel nekdo, ki bo v MojRazred definiral property Prop1, potem se bo pa zatipkal pri GetValue(obj, "Pro1") in a) dobil 42 in b) izgubil 2 uri, da bo ugotovil zakaj mu koda ne dela :). Podoben problem sem imel, ko sem hotel spisati delegata na propertije in se na koncu odlocil, da sebi in drugim ne zaupam dovolj... lp,Gregor
spirit1 - petek, 02. marec 2007
channel sink = kanalni ponor
SxR - petek, 02. marec 2007
Zdravo.Nisem sicer prepričan, da je to tisto kar hočeš - mogoče pa se mi le dozdeva. Poigraš se lahko z objekti iz razreda MarshalByRefObject oziroma ContextBoundObject. Ker ti objekti (oziroma kljent ) zaradi konteksta potrebujejo proxy lahko, tako kot pri remoting objektih dodaš ahem channel sink (kako za vraga se to reče ... umivalnik ? ;)) ).Sicer si pa preberi: http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/ LP
AndrejT - četrtek, 01. marec 2007
Če si poskušam predstavljati, kaj želiš narediti... Imaš objekt, za katerega v runtime ne veš, katere lastnosti ima, pa želiš recimo vseeno dostopat do njegove lastnosti "Prop1", če jo slučajno ima? Če gre za to, ti bo pomagal Reflection, v nasprotnem primeru pa še dodatno razloži svojo situacijo.
rocco - četrtek, 01. marec 2007
Saj vem, da se da narediti tudi drugace, ampak me je vseeno zanimalo, ce obstaja kaksna taka moznost. Vendar bi se najverjetneje res ze pri prevajalniku zataknilo... lp
F34R - četrtek, 01. marec 2007
Tole je malo skregano z logiko, kaj če bi ti mogoče kar povedal kaj ti dejansko želiš naredit, pa bomo vidli če je kakšen drugačen pristop bolj smiseln!
MihaM - četrtek, 01. marec 2007
Moram priznat, da mi ni čist jasno. Kako naj prevajalnik ve, kateri property naj uporabi, če niso definirani?Mogoče znaš povedat, kaj hočeš dosečt?
rocco - četrtek, 01. marec 2007
v mojem primeru, bi izpis bil:4242pa ceprav Prop1 in SoajxvswjsdfD nista definirana znotraj MojRazred.
spirit1 - četrtek, 01. marec 2007
hmm... poisci si na googlu observer pattern. zdi se mi da je to tisto kar isces.ni mi pa jasno kako to mislis, da ti property nekaj vrne ko ni definiran. kdo ni definiran?ce hoces genericen return potem ti mora vsak property vrnit object.dej malce bolj razlozi kaj tocno zelis.