C# Tutorials - Herong's Tutorial Examples - v3.32, by Herong Yang
Partial Class Example
A tutorial example is provided on how to write two source files with two partial classes. When compile them together, two partial classes become a single complete class.
To verify our understanding of partial classes, let's rewrite the MyWindow class from WpfButtonTest.cs file presented earlier in the book into two partial classes:
The first partial class only includes the private property myLabel and the constructor MyWindow() in the first source file, PartialClass1.cs:
// PartialClass1.cs // Copyright (c) 2016 HerongYang.com. All Rights Reserved. using System.Windows; using System.Windows.Controls; public partial class MyWindow : Window { private Label myLabel; public MyWindow() { Width = 200; Height = 200; Title = "WPF Button Test"; Grid myGrid = new Grid(); Content = myGrid; Button yesButton = new Button(); yesButton.Content = "Yes"; yesButton.Margin = new Thickness(50, 10, 50, 0); yesButton.Height = 30; yesButton.VerticalAlignment = System.Windows.VerticalAlignment.Top; yesButton.Click += new RoutedEventHandler(yesButton_Click); myGrid.Children.Add(yesButton); Button noButton = new Button(); noButton.Content = "No"; noButton.Margin = new Thickness(50, 50, 50, 0); noButton.Height = 30; noButton.VerticalAlignment = System.Windows.VerticalAlignment.Top; noButton.Click += new RoutedEventHandler(noButton_Click); myGrid.Children.Add(noButton); myLabel = new Label(); myLabel.Margin = new Thickness(50,90,50,0); myGrid.Children.Add(myLabel); } }
The second partial class includes two event handlers and the entry point Main() in the second source file, PartialClass2.cs:
// PartialClass2.cs // Copyright (c) 2016 HerongYang.com. All Rights Reserved. using System.Windows; using System.Windows.Controls; public partial class MyWindow : Window { void yesButton_Click(object sender, RoutedEventArgs e) { myLabel.Content = "Yes clicked"; } void noButton_Click(object sender, RoutedEventArgs e) { myLabel.Content = "No clicked"; } [System.STAThread] public static void Main() { Application app = new Application(); app.Run(new MyWindow()); } }
Of course, we can compile them with a MSBuild project file, PartialClass.proj:
<!-- PartialClass.proj // Copyright (c) 2016 HerongYang.com. All Rights Reserved. --> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <AssemblyName>PartialClass</AssemblyName> <NET>C:\windows\Microsoft.NET\Framework\v4.0.30319</NET> <REF1>C:\Program Files\Reference Assemblies</REF1> <REF2>\Microsoft\Framework\.NETFramework\v4.6.1</REF2> <REF>$(REF1)$(REF2)</REF> </PropertyGroup> <ItemGroup> <Compile Include="PartialClass1.cs" /> <Compile Include="PartialClass2.cs" /> <Reference Include="$(REF)\PresentationFramework.dll" /> <Reference Include="$(REF)\PresentationCore.dll" /> <Reference Include="$(REF)\System.Xaml.dll" /> <Reference Include="$(REF)\WindowsBase.dll" /> </ItemGroup> <Target Name="Build"> <Csc ToolPath="$(NET)" Sources="@(Compile)" References="@(Reference)" OutputAssembly="$(AssemblyName).exe"/> </Target> </Project>
Here is the compilation result:
C:\herong>set "NET=\windows\Microsoft.NET\Framework\v4.0.30319" C:\herong>%NET%\msbuild PartialClass.proj Microsoft (R) Build Engine version 4.6.1055.0 [Microsoft .NET Framework, version 4.0.30319.42000] Copyright (C) Microsoft Corporation. All rights reserved. Build started 8:42:22 PM. Project "C:\herong\PartialClass.proj" on node 1 (default targets). Build: C:\windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /reference:"C:\Program Files\Reference Assemblies\Microsoft \Framework\.NETFramework\v4.6.1\PresentationFramework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft \Framework\.NETFramework\v4.6.1\PresentationCore.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft \Framework\.NETFramework\v4.6.1\System.Xaml.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft \Framework\.NETFramework\v4.6.1\WindowsBase.dll" /out:PartialClass.exe PartialClass1.cs PartialClass2.cs Done Building Project "C:\herong\PartialClass.proj" (default targets). Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:00.42
Now we can run the executable program file: PartialClass.exe.
Table of Contents
Logical Expressions and Conditional Statements
Visual C# 2010 Express Edition
C# Compiler and Intermediate Language
Compiling C# Source Code Files
MSBuild - Microsoft Build Engine
System.Diagnostics.FileVersionInfo Class
WPF - Windows Presentation Foundation