views:

47

answers:

3

Is it possible to have partial classes across projects.

e.g. Project 1 has a Customer Class. Project2 whish is an optional module adds to the customer class by attaching an order class, and utilising the original Customer Class.

+1  A: 

No. A partial class must be compiled within the same context, i.e. assembly.

What you probably want to do is use Inheritance.

Randolpho
+5  A: 

You cannot use the partial keyword to split the code for a class between projects. The partial keyword is a compiler trick; the compiler will output one single class out of the parts it finds, so all parts of the class must exist with the same binary file. Once the class is compiled, there is no trace left of it being a partial class.

If you want to extend an existing class you will either need to inherit it (if it is not sealed), or create your own new class that contains the classes that you wish to combine information from.

Fredrik Mörk
+1 for mentioning composition as an alternative to inheritance.
Randolpho
+1  A: 

partial classes are entirely a compiler construct - it basically concatenates the class definitions together, then compiles that. There is no concept of a 'partial class' in .net, so you cannot split partial classes across different compilation units (projects or assemblies)

thecoop