Можно ли скрыть конструктор без параметров от пользователя в C#скрыть конструктор без параметров на структуры
Я хочу, чтобы заставить их всегда использовать конструктор с параметрами
например этот класс установки
public struct Position
{
private readonly int _xposn;
private readonly int _yposn;
public int Xposn
{
get { return _xposn; }
}
public int Yposn
{
get { return _yposn; }
}
public Position(int xposn, int yposn)
{
_xposn = xposn;
_yposn = yposn;
}
}
Я только хочу, чтобы пользователи могли в новом позицию, указав координаты х и у
Однако конструктор без параметров ВСЕГДА Доступно
Я не могу сделать это частный , Или даже определить его как общественное
Я прочитал это Why can't I define a default constructor for a struct in .NET?
но это реально не поможет
Если это не представляется возможным - то, что это лучший способ, чтобы обнаружить, если позиция я передается имеет значения?
Пояснение, проверяющее каждое поле свойств? Есть ли более легкий способ?
благодаря
Я рассматриваю это как проблему юзабилити больше, чем что-либо еще. Конструктор по умолчанию может создавать объект _valid_, но для многих структур это не то, что пользователь хочет или ожидает. Тем не менее некоторые люди будут использовать этот конструктор по умолчанию только потому, что это первый вариант, который дает их IDE.И тогда у них будут путаные ошибки, вызванные обнуленными структурами, которые должны были быть заполнены данными, или они будут тратить время на попытки выяснить, почему они не могут устанавливать свойства в неизменяемой структуре. С точки зрения API-дизайна мне хотелось бы скрыть конструктор по умолчанию. –
+1 @MB. Частный конструктор по умолчанию поможет, даже если определенный «дурак» может обойти его. Как соль C++, я считаю «частным» как подсказку, чтобы не стрелять в ногу, всегда есть работа с помощью указателей. И семантику массива можно позаботиться, просто не позволяя создавать массивы таких структур. –
@roryapL Исправлено, спасибо. –