2017-06-23 4 views
0

Disons que j'ai un projet A qui contient des classes communes qui vont être partagés entre le projet B et le projet C.action ordinaire C# classe entre 2 projets mais permettent un projet d'apporter des modifications à ce

Est-il possible pour que le projet C implémente sa propre version d'une classe à partir du projet A, les autres classes du projet A utiliseront la version du projet C si cela doit être la cible de génération ou la version du projet B (version partagée) s'il s'agit de la cible . Avoir 2 classes séparées serait une solution je pense mais cela va être une douleur dans le cul pour s'assurer que je mets à jour les deux versions. Une autre solution que je peux penser serait des méthodes virtuelles mais je n'ai aucune idée si la dépendance de classe partagée utilisera la méthode substituée ou celle d'origine.

+0

Vous pouvez utiliser un fichier de raccourci d'un assemblage dans un autre. Combiné avec les configurations de construction devrait faire ce que vous voulez – Novaterata

+0

Je ne recommande pas cela si. Juste avoir une bibliothèque commune et utiliser l'injection de dépendance. – Novaterata

+0

Avez-vous pensé à l'héritage? Vous pouvez créer une classe dans pA (projet A) et l'utiliser dans pB et pC. Il est rare de construire une classe qui est modifiée par un autre projet pour être utilisé comme dans pC dans pA. Vous pourriez faire 'pA.MyClass' et' pC.MyClass: pA.MyClass' et que pour les autres classes, la même 'pA.otherClass; void xyz (pA.MyClass myClass); pC.otherClass: pa.otherClass; override void xyz (pC.MyClass myClass): base ... ' – DomeTune

Répondre

1

N'écrivez pas de classe. Ecrire une interface. Ensuite, par conception, une classe dépendant de l'interface peut utiliser n'importe quelle implémentation de l'interface.