Поскольку структуры не могут иметь явных определяемых пользователем конструкторов без параметров, например,
public struct MyStruct
{
public MyStruct() { … } // Not allowed!
}
Мне было интересно, если и как я могу применить атрибут к этому точному конструктору.В конце я хочу сделать следующее (лучше всего, если бы конструктор без параметров мог быть закрытым, но это тоже недопустимо):
public struct MyStruct
{
[Obsolete("Do not call the constructor directly, use MyStruct.Get() instead.")]
public MyStruct() { … }
public static MyStruct Get
{
// Important initializing here.
}
}
Есть ли что-то похожее на эту цель вымышленного атрибута[constructor: Obsolete()]
которая позволяет применять атрибут к конструктору по умолчанию?
РЕДАКТИРОВАТЬ: Еще немного информации.
Ситуация такова: мне нужно использовать MyStruct
дляP / Invoke и не может использовать класс.Я хочу предупредить пользователя, что он не должен получать экземпляр MyStruct
, поскольку он пропускает важную инициализацию, и вместо этого ему следует использовать фабричный метод.