Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Kako "poturiti" querable objekat umesto enumerable objekta

  • 2 odgovora
  • 1.941 pregleda

Najnovija ↓

Kako "poturiti" querable objekat umesto enumerable objekta 26.01.2011. u 11:36 · pre 191 mesec #1
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.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Kako "poturiti" querable objekat umesto enumerable objekta 26.01.2011. u 13:30 · pre 191 mesec #2
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.
Potpis
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ć
Re: Kako "poturiti" querable objekat umesto enumerable objekta 26.01.2011. u 14:02 · pre 191 mesec #3
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. ;)
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme