对于所有部分类的实例化,我们是否需要关键字partial?

0 .net c#

假设我有一个旧的类,日期为c#1.1,我想添加更多方法,字段.现在我使用2005,因此最合乎逻辑的解决方案是使用部分类.但是,似乎我必须在我定义它的文件中假装单词partial.

问题:

如果我不能在旧文件中更改类声明(向其中添加部分单词),但仍想添加方法,我该怎么办?

Jon*_*jap 10

嗯,首先,是的,您需要在同一名称空间下对所有涉及的类使用partial关键字.这将告诉编译器这些是将放在一起的同一个类的部分.

现在,如果你真的无法改变旧类,你可以做的一件事就是继承你的旧类:

public class NewClass : OldClass
Run Code Online (Sandbox Code Playgroud)

...因此,您可以扩展OldClass的功能.

你也可以选择只使用旧类的某种包装器作为属性/属性:

public class NewClass
{
    public OldClass MyClass { get; set; } //.NET 3.5 / VS2008

    private OldClass _oldClass; //.NET 2.0 / VS2005
    public OldClass MyClass
    {
       get { return _oldClass; }
       set { _oldClass = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

......甚至是通用的:

public class NewClass<T> where T: OldClass //applicable in both versions
Run Code Online (Sandbox Code Playgroud)

扩展方法的建议也将起作用:

public void NewMethod1(this OldClass, string someParameter){}  //available only in .NET 3.5/VS2008
Run Code Online (Sandbox Code Playgroud)