Quali sono le implicazioni e gli scenari suggeriti da utilizzare?utilizza Assembly. Carica un riferimento statico o riferimento dinamico?
risposta
Assembly.Load
è un riferimento dinamico poiché si sta caricando in modo dinamico una DLL esterna in fase di esecuzione. Prenderesti in considerazione un riferimento statico più come quando aggiungi un riferimento a un progetto .NET e costruisci il progetto con quel riferimento in atto.
EDIT:
Dal Doc MSDN:
I record del compilatore statico riferimenti nei metadati del manifesto dell'assembly a tempo di costruzione.
Hmmm, non sono sicuro di questo da solo. Terrò la mia risposta qui per ora, nella speranza di ottenere più commenti di correzione o vedere risposte migliori.
Un riferimento dyanamic come indicato nel MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx) fa riferimento a riferimenti dinamici come caricamento di un riferimento con le informazioni sufficienti che il runtime deve cercare per il gruppo che viene caricato. Con riferimenti statici, la posizione degli assembly (GAC, application direcotry, ecc.) È nota e può essere ancora eseguita utilizzando Assembly.load.
In riferimento a:
Quali sono le implicazioni e suggerito scenari da utilizzare?
Di solito, se uso Assembly.Load()
, è perché sto sviluppando un sistema collegabile. I riferimenti dinamici facilitano l'inclusione di assiemi che non sono necessariamente parte della mia build.
I tipi di istanziazione da un assieme caricato in modo dinamico richiedono almeno un po 'di riflessione. La quantità di riflessione necessaria può essere attenuata assicurando che i tipi caricati dinamicamente implementino un'interfaccia o una classe base nota (da un assieme caricato staticamente).
In breve, è molto lavoro utilizzare gli assembly caricati dinamicamente; tuttavia, fare ciò può rendere più flessibile un'applicazione, consentendo agli utenti di sviluppare plug-in. Basta valutare i compromessi della flessibilità prevista dei riferimenti dinamici (che potrebbe non essere un requisito) e il supporto in fase di progettazione di Visual Studio per riferimenti statici.
Una pratica degna di considerazione se la creazione di un'architettura plug-in è di caricare gli assiemi nei propri AppDomain. Ciò consente di avere un controllo più preciso delle autorizzazioni di sicurezza degli assembly di cui non ci si può fidare completamente e offre il vantaggio aggiuntivo che gli assembly possono essere scaricati in fase di esecuzione. Personalmente, ho trovato che lavorare con AppDomains richiede molto lavoro; tuttavia, se sono necessari i vantaggi, è bene sapere che gli AppDomain ci sono.
- 1. Riferimento non definito a un membro statico
- 2. Metodo di riferimento. Non è possibile fare un riferimento statico per il metodo non statico
- 3. non può creare un riferimento statico al campo non statico
- 4. Carica un assembly in fase di esecuzione che fa riferimento all'assieme chiamante
- 5. MSBuild ottenere riferimento assembly da ProjectReference
- 6. Come risolvere? Assumendo riferimento assembly 'System.Web.Mvc
- 7. Riferimento assembly non risolto con sandcastle
- 8. Come utilizzare un FirebaseRecyclerAdapter con un riferimento dinamico in Android?
- 9. Creazione di un riferimento statico contro un Singleton
- 10. Posso avere il mio assembly riferimento qualsiasi versione di un altro assembly?
- 11. Esiste un riferimento al linguaggio assembly completo x86 che utilizza la sintassi AT & T?
- 12. Possiamo fare riferimento dinamico all'elemento (Lato server)
- 13. Riferimento ai membri dinamici dell'oggetto C# "dinamico"
- 14. È possibile fare riferimento a un assembly .NET da ColdFusion?
- 15. Riferimento a .net framework 4.5.1 assembly in un progetto 4.0
- 16. Come scaricare un assembly .NET di riferimento in IronPython
- 17. C# CompileAssemblyFromSource, aggiungere assembly di riferimento di cui ha bisogno?
- 18. requirejs carica file JSON statico
- 19. Ottenere implementazioni dell'interfaccia negli assembly di riferimento con Roslyn
- 20. Come ottenere un riferimento statico a una finestra WPF?
- 21. Carica un ResourceDictionary da un assembly
- 22. Riferimento a una variabile XSLT tramite un nome dinamico
- 23. "const int statico" causa l'errore di collegamento (undefined-riferimento)
- 24. Errore: "Impossibile creare un riferimento statico al metodo non statico findViewById (int) dal tipo Attività"
- 25. C++ DAL - Ritorno di riferimento o popolano passata in riferimento
- 26. Riferimento a un riferimento in C++
- 27. Java - Riferimento oggetto o identificatore?
- 28. Espressione lambda o riferimento metodo?
- 29. di riferimento unico errore necessaria quando si utilizza LINQ
- 30. Carica un assembly dal Cestino in ASP.NET
Questo non è del tutto corretto, credo ... un riferimento dyanamic come indicato nel MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf (VS.71) .aspx) fa riferimento a riferimenti dinamici come caricare un riferimento con solo informazioni sufficienti che il runtime deve cercare l'assembly da caricare. Con riferimenti statici, la posizione degli assembly (GAC, application direcotry, ecc.) È nota e può essere ancora eseguita utilizzando Assembly.load. – Achilles