Istanziare interfacce

lunedì 14 aprile 2008 - 16.12

adima80 Profilo | Junior Member

ciao, stavo scrivendo la mia applicazione e mi sono imbatturo in questo pezzo di codice di esempio:
Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application();

Outlook.Application è un'interfaccio, in pratica crea una nuova istanza di un'interfaccia... come fa???? ho provato a scrivere qualche riga di codice ma il compilatore c# non mi capisce e continua a generare errori!

avete tempo di spiegarmi la cosa perchè mi interessa ed incuriosisce.

grazie, ciao!

aiedail92 Profilo | Expert

Ciao

Le interfacce non possono essere istanziate, poichè non contengono alcuna implementazione. Esse servono a descrivere una funzionalità che può appartenere a classi diverse, quindi ad esempio l'interfaccia IList "marchia" una classe come lista di elementi, una IDisposable indica che la classe può rilasciare le proprie risorse in modo sicuro, e un'IButtonControl indica che la classe può comportarsi come un Button (cioè essere clickata).

Nelle interfacce, come ho già detto, non può essere contenuta alcuna implementazione, ma solo la dichiarazione dei metodi, delle proprietà e degli eventi; sta poi alla classe che deriva dall'interfaccia decidere come implementare il tutto.

...Ma forse questo lo sapevi già...

Nel caso di Outlook non so cosa succeda esattamente; forse Application viene usato sia come interfaccia sia come alias di ApplicationClass, però non saprei dirti con esattezza... Effettivamente in debug, se dichiari una variabile object inizializzandola come new Microsoft.Office.Interop.Outlook.Application, il tipo visualizzato è proprio ApplicationClass, anche se non saprei dirti come ottenere questo effetto...

Luca

adima80 Profilo | Junior Member


>
>...Ma forse questo lo sapevi già...
>

certo che lo sapevo già!

grazie per la risposta; io nel frattempo sto scavando in tutta internet per trovar soluzione, DEVO SAPERE!!!!


ciaoo

aiedail92 Profilo | Expert

Bene!

Quando trovi qualcosa facci sapere

Luca
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5