web-dev-qa-db-ja.com

静的な部分クラスを実行することは可能ですか?

私が持っているクラスをいくつかの小さなクラスに分割して、メンテナンスと読み取りが容易になるようにします。しかし、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クラスを静的にして、使用する前に初期化する必要がないようにします。

33
OmniOwl

ファイル全体で名前と修飾子の一貫性を保つ:

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
}
38
Guillaume

問題は、クラスがpartialクラスであることではありません。問題は、別のクラスからstaticクラスを派生させようとすることです。ポリモーフィズムやその他の継承の理由を利用できなかったため、staticクラスを派生させる意味はありません。

partialクラスを定義する場合は、同じ名前とアクセス修飾子でクラスを作成します。

12
Markus

静的クラスを継承できません

静的クラスは封印されているため、継承できません。 Objectを除くどのクラスからも継承できません。

5
Tuyen Pham

C#は、静的クラスからの継承をサポートしていません。

クラスを静的にするかを選択する必要があります。

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
}

...またはMachineFacadeを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
}
3

何もオーバーライドする必要はありません。同じ名前を付けるだけです。

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

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