Согласно MSDN, A static constructor is called automatically to initialize the class before the first instance is created. Поэтому вы не можете отправить ему какие-либо параметры.
CLR должен вызвать статический конструктор, как он узнает, какие параметры передать его?
Поэтому не используйте статический конструктор.
Вот работа для вашего требования.
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;
}
}
Статические конструкторы обладают следующими свойствами:
- Статический конструктор не принимает модификаторы доступа или имеют параметры. Статический конструктор автоматически вызывается в , инициализируя класс до создания первого экземпляра или ссылается на статические элементы .
- Статический конструктор нельзя вызвать напрямую.
- Пользователь не может контролировать, когда статический конструктор выполняется в программе.
- Типичное использование статических конструкторов - это когда класс использует файл журнала, а конструктор используется для записи записей в этот файл.
- Статические конструкторы также полезны при создании классов-оболочек для неуправляемого кода, когда конструктор может вызвать метод LoadLibrary .
- Если статический конструктор создает исключение, среда выполнения не будет вызывать его второй раз, и тип останется неинициализированным для времени жизни домена приложения, в котором работает ваша программа .
Возможно, вы сделали это «статическим» по неправильным причинам. Редизайн. –
Первый вопрос: почему этот класс статичен? Редко это должно быть. –