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?
c#
dll
partial-classes
Brad
la source
la source
Réponses:
À partir de MSDN - Classes partielles et méthodes :
la source
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.
la source
Non ce n'est pas possible. Lorsque l'assembly est compilé, la classe doit être terminée.
la source
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 source
Vous pouvez utiliser des méthodes d'extension lorsque vous souhaitez ajouter une méthode à une classe dans une autre DLL. Le seul inconvénient de cette méthode est que vous ne pouvez pas ajouter de méthodes statiques.
la source
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.
la source
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.
la source