是否可以将普通类与像这样的分部类组合:
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#是否支持这种模式?
提前谢谢大家!
答案 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; }
}