Is it possible to do static partial classes?

2019-06-14 20:58发布

I want to take a class I have and split it up into several little classes so it becomes easier to maintain and read. But this class that I try to split using partial is a static class.

I saw in an example on Stackoverflow that this was possible to do but when I do it, it keeps telling me that I cannot derive from a static class as static classes must derive from object.

So I have this setup:

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
}

Any pointers? I want the Facade class to be static so that I don't have to initialize it before use.

5条回答
我想做一个坏孩纸
2楼-- · 2019-06-14 21:26

You can not inherit a static class.

Static classes are sealed and therefore cannot be inherited. They cannot inherit from any class except Object.

查看更多
贼婆χ
3楼-- · 2019-06-14 21:37

Keep naming and modifiers consistent across files:

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
}
查看更多
smile是对你的礼貌
4楼-- · 2019-06-14 21:43

C# doesn't support inheritance from a static class.

You have to choose between your classes being static:

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
}

...or whether you wish MachineFacade to derive from Facade:

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

public partial class MachineFacade : Facade
{
    // Methods that are specifically for Machine Queries in our Database
}
查看更多
爷、活的狠高调
5楼-- · 2019-06-14 21:45

The problem is not that the class is a partial class. The problem is that you try to derive a static class from another one. There is no point in deriving a static class because you could not make use Polymorphism and other reasons for inheritance.

If you want to define a partial class, create the class with the same name and access modifier.

查看更多
迷人小祖宗
6楼-- · 2019-06-14 21:49

you do not need to override anything, just give them the same name:

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

public static partial class Facade
{
    // this is the 2nd part/file
}
查看更多
登录 后发表回答