È possibile avere due parti (stesso spazio dei nomi, stesso nome di classe) in una classe parziale in DLL separate?
È possibile avere due parti (stesso spazio dei nomi, stesso nome di classe) in una classe parziale in DLL separate?
Risposte:
Da MSDN - Classi e metodi iniziali :
Tutte le definizioni di tipo parziale intese come parti dello stesso tipo devono essere definite nello stesso assembly e nello stesso modulo (file .exe o .dll). Le definizioni parziali non possono estendersi su più moduli.
No. Le lezioni parziali sono una caratteristica puramente linguistica. Quando viene compilato un assembly, i file vengono combinati per creare il tipo. Non è possibile distribuire i file in diversi assiemi.
A seconda di ciò che vuoi fare, tuttavia, potresti essere in grado di utilizzare i metodi di estensione per ottenere ciò di cui hai bisogno.
No non è possibile. Quando l'assembly viene compilato, la classe deve essere terminata.
Mentre altre risposte forniscono il "no" spiacevole che nessuno atterrando su questa pagina non voleva vedere o sentire, sono stato colpito da un altro pensiero che non è stato ancora menzionato qui. Se le classi parziali fossero consentite in tutti gli assiemi, si otterrebbe l'accesso a membri privati di tipi esistenti che non sono stati scritti da lui, permettendogli così di manipolarli in modi che non erano previsti dall'autore originale, compromettendo così la funzionalità di tutte le classi ereditarie pure.
Non solo, quelle classi in altre assemblee (e i loro figli) dovrebbero essere ricompilate per farlo funzionare. Pertanto non è logicamente possibile consentire la suddivisione di una classe su assiemi diversi.
La domanda è: perché vorresti creare una classe parziale in un altro assembly? È possibile definire classi e interfacce astratte tra assiemi, forse è necessario esaminarlo.
Probabilmente vuoi solo creare una classe Wrapper nella tua libreria, attorno alla classe nella libreria della terza parte. Quindi aggiungere qualsiasi funzionalità alla classe wrapper.