У меня есть класс, содержащий ряд свойств, например:
public class Update
{
public int Quantity { get; set; }
public decimal Price { get; set; }
public string Name { get; set; }
}
Каждый экземпляр Update
не обязательно должен иметь каждый набор свойств, и другая часть системы должна знать, какие из них установлены, а какие нет.
Один из вариантов, который у меня есть, состоит в том, чтобы сделать все типы значений Nullable
, и поэтому значение null
будет представлять концепцию отсутствия установки. Хотя это сработает, мне не очень нравится идея иметь некоторые свойства явно Nullable
(типы значений) и некоторые обнуляемые в силу того, что они являются ссылочным типом. Определение класса выглядело бы некрасиво, и я не уверен, что нулевая проверка является семантически лучшим подходом.
Я мог бы создать класс, очень похожий на Nullable<T>
, который не имеет ограничений на T
со свойством IsSet
. Я предпочитаю эту опцию использованию Nullable
, но я все же хотел бы посмотреть, есть ли у кого-нибудь альтернативное представление, которое лучше предложенных мной вариантов.