1

是否可以像这样将普通类与部分类结合起来:

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# 是否支持这种模式?

谢谢大家!

4

3 回答 3

4

简短的回答:。MSDN在这里声明:

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

于 2012-06-12T05:59:40.240 回答
2

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

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

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

(强调我的。)

于 2012-06-12T05:59:49.157 回答
0

参与partial一个类的所有文件都必须用partial. 此外,它们必须存在于同一个程序集中。

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

这是派生类,尽管它与partial.

public class ClassA
{

    public string PropertyA { get; set; }
}

public class ClassB : ClassA
{
    public string PropertyB { get; set; }
}
于 2012-06-12T05:59:50.847 回答