¿Es posible hacer clases parciales estáticas?


Quiero tomar una clase que tengo y dividirla en varias clases pequeñas para que sea más fácil de mantener y leer. Pero esta clase que intento dividir usando partial es una clase estática.

Vi en un ejemplo en Stackoverflow que esto era posible hacer, pero cuando lo hago, sigue diciéndome que no puedo derivar de una clase estática, ya que las clases estáticas deben derivar de object.

Así que tengo esta configuración:

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
}

Alguna sugerencia? Quiero que la clase Facade sea estática que no tengo que inicializarlo antes de usarlo.

Author: OmniOwl, 2016-02-22

5 answers

Mantenga los nombres y modificadores consistentes entre los archivos:

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
}
 34
Author: Guillaume,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 15:53:02

El problema no es que la clase sea una clase partial. El problema es que intenta derivar una clase static de otra. No tiene sentido derivar una clase static porque no se podría hacer uso del polimorfismo y otras razones para la herencia.

Si desea definir una clase partial, cree la clase con el mismo nombre y modificador de acceso.

 12
Author: Markus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 08:40:09

Usted no puede heredar una clase estática.

Las clases estáticas están selladas y, por lo tanto, no se pueden heredar. Le no puede heredar de ninguna clase excepto Object.

 5
Author: Tuyen Pham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 08:41:44

No necesitas anular nada, solo ponles el mismo nombre:

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

public static partial class Facade
{
    // this is the 2nd part/file
}
 3
Author: VDN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 08:38:46

C# no admite la herencia de una clase estática.

Tienes que elegir entre tus clases siendo estáticas:

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
}

...o si desea que MachineFacade derive 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
Author: Knickerless-Noggins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-22 08:45:04