Est-il possible d'avoir deux parties (même espace de noms, même nom de classe) dans une classe partielle dans des DLL distinctes?
Est-il possible d'avoir deux parties (même espace de noms, même nom de classe) dans une classe partielle dans des DLL distinctes?
Réponses:
À partir de MSDN - Classes partielles et méthodes :
Toutes les définitions de type partiel destinées à être des parties du même type doivent être définies dans le même assemblage et le même module (fichier .exe ou .dll). Les définitions partielles ne peuvent pas couvrir plusieurs modules.
Non. Les classes partielles sont une fonctionnalité purement linguistique. Lorsqu'un assembly est compilé, les fichiers sont combinés pour créer le type. Il n'est pas possible de répartir les fichiers dans différents assemblages.
En fonction de ce que vous voulez faire, cependant, vous pourrez peut-être utiliser des méthodes d'extension pour accomplir ce dont vous avez besoin.
Non ce n'est pas possible. Lorsque l'assembly est compilé, la classe doit être terminée.
Alors que d'autres réponses fournissent le "Non" désagréable que quiconque atterrissant sur cette page ne voulait ni voir ni entendre, j'ai été frappé par une autre pensée qui n'a pas encore été mentionnée ici. Si des classes partielles étaient autorisées dans les assemblys, on aurait accès aux membres privés des types existants qui n'ont pas été écrits par lui, lui permettant ainsi de les manipuler d'une manière qui n'était pas prévue par l'auteur d'origine, mettant ainsi en péril la fonctionnalité de toutes les classes héritées. aussi.
Non seulement cela, ces classes dans d'autres assemblys (et leurs enfants) devraient être recompilées pour que cela fonctionne. Ainsi, il n'est logiquement pas possible d'autoriser la division d'une classe sur différents assemblys.
La question est pourquoi voudriez-vous créer une classe partielle dans un autre assembly? Vous pouvez définir des classes abstraites et des interfaces entre les assemblys, vous devez peut-être vous pencher là-dessus.
Vous souhaitez probablement simplement créer une classe Wrapper dans votre propre bibliothèque, autour de la classe dans la bibliothèque de 3e partie. Ajoutez ensuite n'importe quelle fonctionnalité à la classe wrapper.