vacio una miembros metodos method estaticos estatica clase c# class static static-classes static-constructor

c# - una - ¿Cómo pasar el parámetro al constructor de clases estáticas?



miembros estaticos de una clase (3)

No utilice un constructor estático, sino un método de inicialización estática:

public class A { private static string ParamA { get; set; } public static void Init(string paramA) { ParamA = paramA; } }

En C #, los constructores estáticos no tienen parámetros, y hay pocos enfoques para superar esta limitación. Una es lo que te he sugerido arriba.

Tengo una clase estática con un constructor estático. Necesito pasar un parámetro de alguna manera a esta clase estática pero no estoy seguro de cómo es la mejor manera. ¿Qué recomendarías?

public static class MyClass { static MyClass() { DoStuff("HardCodedParameter") } }


Según MSDN, se llama automáticamente a un constructor estático para inicializar la clase antes de que se cree la primera instancia . Por lo tanto no puedes enviar ningún parámetro.

CLR debe llamar a un constructor estático, ¿cómo sabrá qué parámetros pasarlo?

Así que no uses un constructor estático.

Aquí está el trabajo alrededor de su requisito.

public class StaticClass { private int bar; private static StaticClass _foo; private StaticClass() {} static StaticClass Create(int initialBar) { _foo = new StaticClass(); _foo.bar = initialBar; return _foo; } }

Los constructores estáticos tienen las siguientes propiedades:

  • Un constructor estático no toma modificadores de acceso o tiene parámetros. Se llama automáticamente a un constructor estático para inicializar la clase antes de que se cree la primera instancia o se haga referencia a cualquier miembro estático.
  • Un constructor estático no puede ser llamado directamente.
  • El usuario no tiene control sobre cuándo se ejecuta el constructor estático en el programa.
  • Un uso típico de los constructores estáticos es cuando la clase usa un archivo de registro y el constructor se usa para escribir entradas en este archivo.
  • Los constructores estáticos también son útiles cuando se crean clases de envoltorio para código no administrado, cuando el constructor puede llamar al método LoadLibrary.
  • Si un constructor estático lanza una excepción, el tiempo de ejecución no lo invocará una segunda vez, y el tipo permanecerá sin inicializar durante la vida útil del dominio de aplicación en el que se ejecuta su programa.

Si por "HardCodedParameter" realmente quiere decir que está codificado, puede usar constantes.

public static class YoursClass { public const string AnotherHardCodedParam = "Foo"; } public static class MyClass { private const string HardCodedParam = "FooBar"; static MyClass() { DoStuff(MyClass.HardCodedParam); DoStuff(YoursClass.AnotherHardCodedParam); } }

Además, puedes usar propiedades estáticas de solo lectura.