将部分类与普通类组合

时间:2012-06-12 05:56:33

标签: c# partial-classes

是否可以将普通类与像这样的分部类组合:

public class ClassA
{
    public string PropertyA {get; set;}
}

public partial class ClassA
{
    public string PropertyB {get; set;}
}

代码的结果应该是:

var instance = new ClassA();

instance.PropertyA = "Something";
instance.PropertyB = "Something else";

C#是否支持这种模式?

提前谢谢大家!

3 个答案:

答案 0 :(得分:4)

简短回答:否。 MSDN声明here

  

所有部分必须使用partial关键字。所有部件必须在编译时可用,以形成最终类型。所有部分必须具有相同的可访问性,例如public,private等。

答案 1 :(得分:1)

没有。部分类的所有部分都必须包含partial修饰符。从C#4语言规范的第10.2节开始:

  

部分类型声明的每个部分都必须包含一个部分修饰符。它必须具有相同的名称,并在与其他部分相同的命名空间或类型声明中声明。 partial修饰符表示类型声明的其他部分可能存在于其他地方,但这些附加部分的存在不是必需的;它对于具有单个声明的类型有效,以包含partial修饰符。

     

必须将部分类型的所有部分编译在一起,以便部件可以在编译时合并为单个类型声明。部分类型特别不允许扩展已编译的类型。

(强调我的。)

答案 2 :(得分:0)

参与类partial的所有文件必须使用partial定义类。此外,它们必须存在于同一个组件中。

您可以使用多态来扩展ClassA。还有扩展方法,但正如名称所述,您只能扩展方法。

这是派生类,虽然它与partial完全不同。

public class ClassA
{

    public string PropertyA { get; set; }
}

public class ClassB : ClassA
{
    public string PropertyB { get; set; }
}