web-dev-qa-db-fra.com

Est-il possible de faire des classes partielles statiques?

Je veux prendre un cours que j'ai et le diviser en plusieurs petits cours pour qu'il soit plus facile à maintenir et à lire. Mais cette classe que j'essaie de diviser en utilisant partial est une classe statique.

J'ai vu dans un exemple sur Stackoverflow que cela était possible mais quand je le fais, il me dit toujours que je ne peux pas dériver d'une classe statique car les classes statiques doivent dériver d'un objet.

J'ai donc cette configuration:

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
}

Des pointeurs? Je veux que la classe Facade soit statique pour ne pas avoir à l'initialiser avant utilisation.

33
OmniOwl

Gardez les noms et les modificateurs cohérents entre les fichiers:

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

Le problème n'est pas que la classe est une classe partial. Le problème est que vous essayez de dériver une classe static d'une autre. Il est inutile de dériver une classe static car vous ne pouvez pas utiliser le polymorphisme et d'autres raisons d'héritage.

Si vous souhaitez définir une classe partial, créez la classe avec le même nom et le même modificateur d'accès.

12
Markus

Vous ne pouvez pas hériter d'une classe statique .

Les classes statiques sont scellées et ne peuvent donc pas être héritées. Ils ne peuvent hériter d'aucune classe sauf Object.

5
Tuyen Pham

C # ne prend pas en charge l'héritage d'une classe statique.

Vous devez choisir entre que vos cours soient statiques:

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
}

... ou si vous souhaitez que MachineFacade dérive de 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
Knickerless-Noggins

vous n'avez pas besoin de remplacer quoi que ce soit, donnez-leur simplement le même nom:

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

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