Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako "poturiti" querable objekat umesto enumerable objekta

[es] :: .NET :: Kako "poturiti" querable objekat umesto enumerable objekta

[ Pregleda: 1117 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Kako "poturiti" querable objekat umesto enumerable objekta26.01.2011. u 10:36 - pre 161 meseci
Imam sledecu situaciju:

Na nekoj klasi imam property Datasource: object koji ocekuje da se postavi na neki IEnumerable<MojItem> ili bilo sta sto provajduje MojItem, standardna situacija. Onda ce glavna klasa da radi nesto kao:
if (DataSource is IEnumerable)
foreach(...)


Meni treba da postavim taj Datasource tako, da svaki put kada se ta klasa referencira na svoj Datasource, da se u stvari "just-in-time" izvrsi moja funkcija koja ce da pripremi svezu listu objekata tipa MojItem.

Edit:
Hteo bih da izbegnem pravljenje novog, treceg objekta i implementiranje IEnumerable interfejsa zbog komplikacija sa prosledjivanjem paramatara, mislio sam na neku magiju sa AsQueryable ili neku closure varijantu.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako "poturiti" querable objekat umesto enumerable objekta26.01.2011. u 12:30 - pre 161 meseci
A sto ti je problem custom IEnumerable, u c# je bar boza napraviti enumerator sa iterator blokovima i yield

Code (csharp):

public class MojEnumeratorWrapper
{
    public static IEnumerable Power(int prvi, int poslednji)
    {
        for(int x = prvi; x<poslednji; x++)
            yield return x;
    }
}
 


iterator block se ne razvija dok ne bude potreban i prekjo njega mozes da napravis sta hoces, pa cak i da neki LINQ query izvrsisi na prvoj iteraciji i onda yieldujes sve redove.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: Kako "poturiti" querable objekat umesto enumerable objekta26.01.2011. u 13:02 - pre 161 meseci
Hvala mmix, totalno sam zaboravio na iteratore. To je upravo ta closure-like-magija koju sam trazio.

Moja implementacija IEnumerable je uvek bila samo implemetiranje GetEnumerator da vrati postojeci enumerator od neke liste ili query-ja, nikada do sada mi nije trebalo da implementiram i taj Enumerator.

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: .NET :: Kako "poturiti" querable objekat umesto enumerable objekta

[ Pregleda: 1117 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.