web-dev-qa-db-fra.com

Classes partielles dans des dll séparées

Est-il possible d'avoir deux parties (même espace de noms, même nom de classe) d'une classe partielle dans des DLL distinctes?

147
Brad

De Classes et méthodes partielles MSDN :

Toutes les définitions de type partiel censées faire partie 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.

219
Justin Niessner

Les cours partiels sont une fonctionnalité purement linguistique. Lorsqu'un assemblage 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, vous pourrez peut-être utiliser méthodes d'extension pour accomplir ce dont vous avez besoin.

35
Adam Robinson

Non ce n'est pas possible. Lorsque l'Assemblée est compilée, le cours doit être terminé.

12
Darin Dimitrov

Alors que d'autres réponses fournissent le désagréable "Non" 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 des assemblages, on aurait accès à des membres privés de types existants qu'il n'aurait pas écrits, ce qui lui permettrait de les manipuler d'une manière non voulue par l'auteur d'origine, mettant ainsi en péril la fonctionnalité de toutes les classes héritées. aussi.

Non seulement cela, les classes dans d'autres assemblées (et leurs enfants) devraient être recompilées pour que cela fonctionne. Il n’est donc logiquement pas possible d’autoriser le fractionnement d’une classe sur différents assemblys.

5
dotNET

Vous pouvez utiliser des méthodes d'extension lorsque vous souhaitez ajouter une méthode à une classe dans une dll différente. Le seul inconvénient de cette méthode est que vous ne pouvez pas ajouter de méthodes statiques.

5
thumbmunkeys

La question est de savoir pourquoi voudriez-vous créer une classe partielle dans une autre assemblée? Vous pouvez définir des classes abstraites et des interfaces sur des assemblages. Vous devez peut-être examiner cela.

3
Gleno