È possibile avere due parti (stesso spazio dei nomi, stesso nome di classe) in una classe parziale in DLL separate?Classi parziali in DLL separate
risposta
Da MSDN -Partial Classes and Methods:
Tutte le definizioni parziale di tipo destinate a siano parti dello stesso tipo deve essere definito nello stesso montaggio e lo stesso modulo (exe o dll). Le definizioni parziali non possono comprendere più moduli .
No, non è possibile. Quando l'assemblaggio è compilato, la classe deve essere completata.
No. Le classi parziali sono una funzione puramente linguistica. Quando un assembly viene compilato, i file vengono combinati per creare il tipo. Non è possibile distribuire i file in gruppi diversi.
A seconda di ciò che si vuole fare, tuttavia, è possibile utilizzare extension methods per ottenere ciò che è necessario.
La domanda è: perché vorresti fare una lezione parziale in un'altra assemblea? È possibile definire classi e interfacce astratte tra assiemi, forse è necessario esaminarlo.
IMHO esistono casi validi, ad esempio: è possibile aggiungere annotazioni modulo MVC a una classe modello definita in un diverso assieme. L'assembly stesso non sa in quale contesto è utilizzato, quindi la classe nell'assembly non dovrebbe avere alcuna annotazione. Potrebbero essere aggiunti in una classe parziale nel contesto MVC (se fosse possibile). – nyi
nyi, perché non ereditare solo da quella classe e dichiarare i tuoi attributi in cima? Puoi anche chiamarlo con lo stesso nome, se preferisci. – Gleno
È possibile utilizzare i metodi di estensione quando si desidera aggiungere un metodo a una classe in una dll diversa. L'unico inconveniente di questo metodo è che non puoi aggiungere metodi statici.
Mentre altre risposte forniscono lo spiacevole "No" che nessuno che si trova in questa pagina non volesse vedere o sentire, sono rimasto colpito da un altro pensiero che non è stato ancora menzionato qui. Se le classi parziali fossero permesse attraverso gli assembly, si otterrebbe l'accesso ai membri privati a tipi esistenti che non erano stati scritti da lui, e gli permetteva di manipolarli in modi non intenzionali dall'autore originale, mettendo così a repentaglio anche tutte le classi ereditanti.
Non solo, quelle classi negli altri gruppi (e nei loro figli) dovrebbero essere ricompilate per farlo funzionare. Pertanto non è logicamente possibile consentire la divisione di una classe su gruppi diversi.
- 1. Costruttori di classi parziali
- 2. classi parziali java
- 3. Utilizzo di classi parziali
- 4. Classi parziali WinForm
- 5. NET classi parziali vs. Ereditarietà
- 6. Problema con l'implementazione dell'interfaccia in classi parziali
- 7. Utilizzo di XmlIgnore su classi parziali generate
- 8. Come condividere i dati tra classi separate in Java
- 9. Come convertire automaticamente le classi VS2003 in file Designer.cs parziali?
- 10. Strumento per unire classi parziali in una classe?
- 11. C++: classi separate per nodi di ramo e foglia?
- 12. Una scorciatoia per saltare tra le classi parziali
- 13. Modelli C++: Specifiche dei modelli parziali e classi di amici
- 14. Le dichiarazioni parziali non devono specificare diverse classi di base
- 15. , serializzare proprietà aggiuntive dalle classi parziali Entity Framework
- 16. Dichiarazioni parziali di non deve specificare diverse classi di base
- 17. Sezioni separate in Python
- 18. Funzioni parziali in Scala
- 19. Viste parziali in AngularJS
- 20. content_for vs resa in parziali
- 21. L'"ordine testuale" tra classi parziali è definito in modo formale?
- 22. Ottieni VS2008 in classi parziali "indent tree-tree" (come file code-behind)
- 23. AngularJS - Uso di parziali dinamicamente all'interno di altri parziali
- 24. Ripetizioni separate da virgola
- 25. Dipendenze DLL circolari in .NET
- 26. Interfacce separate dall'implementazione della classe in progetti separati?
- 27. Incorporare dylib in dll Xamarin.Mac dll
- 28. JS angolari e parziali
- 29. Ricerca stringhe parziali PHP
- 30. corsivo parziali, axis.text.x
come gli altri hanno detto che non è possibile, ma ci sono modi per integrare le classi con un nuovo comportamento da diverse fonti, cosa esattamente vuoi fare in dll differenti? – Ozan
Nel mio caso, voglio aggiungere un paio di metodi statici a una classe che è definita in una libreria di terze parti. I metodi di estensione non funzionano e nemmeno le interfacce e l'ereditarietà, perché la classe è statica. Dopo aver scoperto che è possibile avere classi statiche parziali, sono venuto qui per scoprire se funziona su assiemi, ma purtroppo sembra che anche questo non funzioni. – Ben