Tom*_*mek 15
部分类有用的一个非常好的例子是当类由工具(如VS)自动生成,并且您希望能够扩展该类的功能并且在工具需要重新生成其代码时不会丢失代码.例如,当您使用Visual Studio实体数据模型设计器时,实体(类)将生成为部分实体.
部分类允许代码不仅添加到生成的类,还实现可选功能.
例如,可能存在执行属性验证的生成代码(通过IDataErrorInfo),但是在生成时无法确定每个属性的验证,部分类允许开发人员稍后指定验证.
生成的文件:
public partial class MyClass : IDataErrorInfo
{
partial void ValidateMyProperty(ref string error);
public string this[string propertyName]
{
get
{
string error = String.Empty;
if (propertyName == "MyProperty")
ValidateMyProperty(ref error);
return error;
}
}
public string Error { get { return String.Empty; } }
public int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
开发人员实现的文件:
public partial class MyClass
{
partial void ValidateMyProperty(ref string error)
{
if (MyProperty < 0)
error = "MyProperty cannot be negative.";
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有一个大类,那么在多个源文件之间拆分定义会很有帮助.
此外,如果要扩展生成的类(例如,从T4模板或ORM) - 或者在您不能或不应该修改原始源文件的任何情况下,您可以使用其他分部类定义以添加在模板或ORM重新生成原始类时不会删除的新功能.
编辑
只是一个观察,但你的报价:
在处理大型项目时,将类分布在单独的文件上可以让多个程序员同时处理它
尽管来自MSDN,但与我坐在一起并不是很好.如果您正在使用一个不错的源代码控制系统(如TFS甚至是svn),那么在源文件中进行合并,其中每个开发人员正在处理不同的方法.说使用分部类使得多个开发人员更容易在同一个类上工作(并且,我可能会下注)可能会鼓励那里的人将他们解决方案中每个类中的每个方法和属性拆分成单独的源文件.那很糟.特别糟糕.就像在,新的雇员谈判工资一样,应该被披露在前面.