是否可以进行静态部分类?

时间:2016-02-22 08:34:22

标签: c# partial-classes

我想上一门课,把它分成几个小班,这样就可以更容易地进行维护和阅读。但是我尝试使用partial分割的这个类是一个静态类。

我在Stackoverflow的一个例子中看到,这是可能的,但是当我这样做时,它一直告诉我,我不能从静态类派生,因为静态类必须从对象派生。

所以我有这个设置:

public static class Facade
{
    // A few general methods that other partial facades will use
}

public static partial class MachineFacade : Facade
{
    // Methods that are specifically for Machine Queries in our Database
}

任何指针?我希望Facade类是静态的,这样我就不必在使用前对其进行初始化。

6 个答案:

答案 0 :(得分:38)

保持命名和修饰符在文件之间保持一致:

public static partial class Facade
{
    // A few general methods that other partial facades will use
}

public static partial class Facade
{
    // Methods that are specifically for Machine Queries in our Database
}

答案 1 :(得分:12)

问题不在于该类是partial类。问题是您尝试从另一个派生static类。导出static类是没有意义的,因为你不能使用多态和其他继承的原因。

如果要定义partial类,请使用相同的名称和访问修饰符创建类。

答案 2 :(得分:5)

can not inherit a static class

  

静态类是密封的,因此无法继承。他们   不能从除Object之外的任何类继承。

答案 3 :(得分:3)

你不需要覆盖任何东西,只需给它们相同的名称:

public static partial class Facade
{
    // this is the 1st part/file
}

public static partial class Facade
{
    // this is the 2nd part/file
}

答案 4 :(得分:3)

C#不支持从静态类继承。

你必须在你的班级之间做出选择:

String myStr = "";

...或者您是否希望MachineFacade派生自Facade:

public static class Facade
{
    // A few general methods that other partial facades will use
}

public static partial class MachineFacade
{
    // Methods that are specifically for Machine Queries in our Database
}

答案 5 :(得分:0)

虽然我参加聚会来不及了...
根据您的问题描述,我认为您的目标是:

  1. 想要一个静态方法组。
  2. 想要将其子组专门用于特定领域。

在这种情况下,我建议使用嵌套类:

public static class Facade
{
    // some methods

    public static class Machine
    {
        // some other methods
    }
}

优点:

  1. 方法是静态的。您可以直接使用它们,而无需初始化任何实例。
  2. 嵌套类名的使用类似于名称空间。您的代码读者清楚地知道Facade.Machine方法比Facade方法及其目标域更具体。
  3. 您可以在不同的类级别使用具有相同签名的方法来做不同的事情来模仿方法覆盖。

缺点:

  1. 没有方法禁止用户在不应该使用的情况下调用Facade.Machine方法。
  2. 没有继承。 Facade.Machine不会自动具有Facade中的方法。