Tested with Microsoft Visual C# 2005 Beta 1, .Net 2.0.40607.42
Partial Classes are classes that can be defined at more than one location, but which contain different
members. Partial Classes also allow you to store the same class, with different members,
in different physical locations.
The following illustrates how partial classes can be implemented:
Partial Classes in the same physical file:
// Class File: DotNetFun.SQL.SProc.cs
namespace DotNetFun.SQL
{
using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;
using System.Xml;
public partial class SProc
{
// members that implement XML related CLR stored procedures...
[SqlProcedure]
public static MyXMLSProc() {
...
}
}
public partial class SProc
{
// members that implement DataSet related CLR stored procedures...
[SqlProcedure]
public static MyDataSetSProc() {
...
}
}
}
Partial Classes in two different physical files:
// Class File: DotNetFun.SQL.SProc.XML.cs
namespace DotNetFun.SQL
{
using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;
using System.Xml;
public partial class SProc
{
// members that implement XML related CLR stored procedures...
[SqlProcedure]
public static MyXMLSProc() {
...
}
}
}
// Class File: DotNetFun.SQL.SProc.DataSet.cs
namespace DotNetFun.SQL
{
using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;
using System.Xml;
public partial class SProc
{
// members that implement DataSet related CLR stored procedures...
[SqlProcedure]
public static MyDataSetSProc() {
...
}
}
}
Partial Classes may each derive from the same base types and interfaces, but may not each contain different
base types and interfaces:
// This is OK:
public partial class SProc : System.Object
{
// members that implement XML related CLR stored procedures...
[SqlProcedure]
public static MyXMLSProc() {
...
}
}
public partial class SProc : System.Object
{
// members that implement DataSet related CLR stored procedures...
[SqlProcedure]
public static MyDataSetSProc() {
...
}
}
// This is ALSO OK:
public partial class SProc : System.Object
{
// members that implement XML related CLR stored procedures...
[SqlProcedure]
public static MyXMLSProc() {
...
}
}
public partial class SProc
{
// members that implement DataSet related CLR stored procedures...
[SqlProcedure]
public static MyDataSetSProc() {
...
}
}
// This is NOT OK:
public partial class SProc : System.Object
{
// members that implement XML related CLR stored procedures...
[SqlProcedure]
public static MyXMLSProc() {
...
}
}
public partial class SProc : System.Collections.ArrayList
{
// members that implement DataSet related CLR stored procedures...
[SqlProcedure]
public static MyDataSetSProc() {
...
}
}