Sommario:
Definizione - Cosa significa attributo DllImport?
DllImport Attribute è un tag dichiarativo utilizzato in C # per contrassegnare un metodo di classe come definito in una libreria di collegamento dinamico (DLL) esterna anziché in qualsiasi assembly .NET.
L'attributo DllImport viene utilizzato in fase di esecuzione per chiamare una funzione esportata in una DLL esterna implementata con codice non gestito che viene eseguito al di fuori del controllo di Common Language Runtime (CLR). Viene anche utilizzato per specificare altre informazioni necessarie durante la chiamata della funzione come la convenzione di chiamata, il tipo di conversione dei parametri passati tra codice gestito e non gestito, ecc. Pertanto, viene utilizzato per interagire con il codice in componenti non gestiti e legacy che risiedono in Windows DLL ed è scritto in C o C ++.
DllImport è utile in situazioni in cui la funzionalità di un'applicazione gestita, il cui codice viene eseguito da CLR, può essere estesa solo accedendo e riutilizzando la funzionalità dell'interfaccia di programmazione dell'applicazione (API) Win32 e altri codici non gestiti definiti dall'utente che vengono implementati nella DLL. Ciò può risparmiare sforzi di sviluppo e utilizzare il codice esistente solido e ben collaudato senza reinventare la ruota in un'applicazione gestita. Di solito è necessario durante l'utilizzo di DLL che non possono essere riscritte ma hanno la possibilità di essere modificate.
Techopedia spiega l'attributo DllImport
L'attributo DllImport è un'istruzione di dichiarazione per la funzione esportata da chiamare dall'applicazione gestita. Non può essere utilizzato per una funzione membro, che richiede un'istanza di classe. Viene specificato in fase di progettazione tra parentesi quadre prima della dichiarazione del metodo per il quale viene applicato. È necessario utilizzare la stringa "extern" prima della dichiarazione della funzione.
Ad esempio, l'attributo DllImport può essere utilizzato nell'applicazione Windows Form, che è un'applicazione gestita per invocare un metodo di un componente modello a oggetti (il cui codice non è gestito) per eseguire alcuni calcoli.
È progettato per importare le DLL tradizionali che esportano le loro funzioni utilizzando il meccanismo di esportazione DLL Windows originale. Non è destinato all'uso del codice nell'assembly gestito (come DLL), a cui è possibile fare riferimento direttamente nel progetto dell'applicazione gestita.
L'attributo DllImport utilizza gli InteropServices del CLR, che esegue la chiamata dal codice gestito al codice non gestito. Informa inoltre il compilatore sulla posizione dell'implementazione della funzione utilizzata. Quando viene chiamata la funzione wrapper non gestita con questo attributo nel codice gestito, CLR individua e carica la DLL necessaria. Esegue il marshalling (converte i parametri secondo le specifiche) e restituisce il codice non gestito dopo l'esecuzione, insieme alla corretta conversione dei parametri.
Durante l'utilizzo dell'attributo DllImport, è necessario prestare attenzione all'utilizzo del nome corretto della DLL e della funzione esportata poiché potrebbero verificarsi errori di battitura in luoghi in cui non possono essere facilmente rilevati.
