Partial Classes
The partial
keyword allows the class, struct, or interface to span across
multiple files. Typically, a class will reside entirely in a single
file. However, in situations where multiple developers need access
to the same class, or more likely in the situation where a code
generator of some type is generating part of a class, then having
the class in multiple files can be beneficial.
The way that the partial
keyword is used is to simply place partial before class, struct, or
interface. In the following example the class TheBigClass resides in two separate source files,
BigClassPart1.cs and BigClassPart2.cs:
When the project that these two source files are
part of is compiled, a single type called TheBigClass will be created with two methods,
MethodOne() and MethodTwo().
If any of the following keywords are used in
describing the class, the same must apply to all partials of the
same type:
-
public
-
private
-
protected
-
internal
-
abstract
-
sealed
-
base class
-
new
-
generic constraints
Nested partials are allowed as long as the partial
keyword precedes the class keyword in the nested type. Attributes,
XML comments, interfaces, generic-type parameter attributes, and
members will be combined when the partial types are compiled into
the type. Given the two source files:
After the compile, the equivalent source file would
be: