Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Implements Collection

Ciao a tutti...
Domanda difficilotta...
Vorrei crearmi una mia propria Collection (con aggiunta di alcune cosette
carine tipo un metodo Clear e un evento che corrisponda alla ricerca di un
elemento non in elenco)... Ovviamente vorrei anche mantanerla compatibile
con la cara vecchia collection... E qui il problema... Come faccio a fare
l'Implements di una collection????
Purtroppo la Collection ha un metodo che si Chiama _NewEnum e Vb mi dice che
non é possibile implemnetare da un interfaccia che ha un metodo che inizia
con un underscore... Che fare?
                            Ciao & grazie
                                                Allanon

ma mantenerla compatibile con la collection standard cosa significa per te??
se il problema è solo per il ciclo "for each obj in collection" allora devi
si utilizzare "_NewEnum" ma non devi implementarla con quel nome ma con
NewEnum (e credo anche altro)
eccoti la definizione
Function NewEnum() As IUnknown
    Set NewEnum = colOriginale.[_NewEnum]
End Function
ricorda che devi dare un ID personalizzato alla funzione che deve essere -4
se no non funge....
se invece intendi qualcosa d'altro ti prego di specificare cosa intendi
ciao
L2K

 se invece intendi qualcosa d'altro ti prego di specificare cosa intendi
Tutto corretto per quanto riguarda il NewEnum, quello che probabilmente
vuole fare Allanon e' pero' usare il polimorfismo (tramite 'implements') in
modo da continuare a dichiarare variabili e parametri come Collection,
utilizzando invece la sua implementazione o magari entrambe a seconda dei
casi...
Creare una classe insieme come hai suggerito funziona, ma ha il difetto di
dover utilizzare dichiarazioni con un tipo esplicito, quindi non e'
"intercambiabile" con una collection standard
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

e quindi? si puo implementare?
hai degli esempi?
L2K

Esatto!
Potrei implementare la mia Collection (d'orainnanz citata come MkCollection)
con 2 interfacce:
L'interfaccia di MkCollection che ad esempio non espone metodi come l'Add
perché non vi si può aggiungere un elemento, ma questi viene caricato
dinamicamente da un Database quando viene cercato... e l'interfaccia di
collection che invece mi permette di accedere "a basso livello" al reale
contenuto dell'oggetto...
Visto che a quanto pare però non é possibile fare ciò... costruirò anche un
interfaccia ICollection per l'esposizione dei metodi della collection... non
sarà così compatibile come vorrei, ma dovrebbe andare ugualmente bene... il
dubbio é un altro ora... potrò dare Id della routine = -4 a 2 diverse
routine? potrò quindi implementare 2 supporti per l'enumerazione alla stessa
classe? Lo scopriremo nella prossima puntata...  :)
                                        Ciaoooooo
                                                        Allanon

routine? 
Fai un po' tu: di solito perche' un ID si chiama cosi' ? ;-)
-- 
ciao, hal

 hai degli esempi?
Ne caso specifico pare di no, proprio per via del metodo nascosto _NewEnum
della collection originaria


> Fai un po' tu: di solito perche' un ID si chiama cosi' ? ;-)
Ovviamente...
Però c'é anche la soluzione al problema...
Basta mettere l'ID -4 al NewEnum e al NewEnum dell'intefaccia secondaria
nell' interfaccia secondaria!
                Ciao
                                Allanon

Allanon ha scrio:

Giusto, in questo caso l' ID e' proprio un ID (visto che si riferisce alla specifica
interfaccia).
-- 
ciao, hal