Устаревшая обработка имени поля в c #

Я боролся с устаревшей обработкой, я знаю, что такое устаревшее использование в С#. Но мой вопрос не в использовании устаревшего управления.

У меня есть класс, такой как salestransactionstep, который содержит имя, описание и количество, как показано ниже:

public class salestransactionstep
{
  string name;
  string description;
  int quantity;

}

Я хочу изменить тип данных поля количества на плавающий. Потому что поле int больше не соответствует моему требованию. Но некоторые клиенты могут использовать поле int, а другие нет. Итак, я не хочу менять поле, и я добавил новое поле, тип данных которого является плавающим, как это, и я добавляю устаревшее свойство к своему старому полю.

public class salestransactionstep
{
  string name;
  string description;
  [Obsolete]
  int quantity;
  float quantity_float;

}

Так что некоторые из старых клиентов используют поле int, другие используют поле float. Я использую SQL-запрос для получения данных, которые иногда вычисляют поле int для удовлетворения старого спроса клиента, а иногда вычисляют поле float для удовлетворения нового клиента. Нравиться;

select count(quantity) from salestransactionstep

OR

select count(quantity_float) from salestransactionstep

Но, по моему мнению, я не справляюсь с этим использованием должным образом. Итак, как я могу справиться с этим, правильно обработать устаревшее поле?


person Mustafa BYKSY    schedule 10.06.2021    source источник
comment
Боковое примечание: вы не должны выставлять поля, вместо этого используйте свойства.   -  person Magnetron    schedule 10.06.2021
comment
ObsoleteAttribute не предназначен для клиентов. Вы спрашиваете об обратной совместимости для изменений базы данных или о чем-то еще?   -  person Sinatr    schedule 10.06.2021


Ответы (2)


То, как вы используете его в настоящее время, вызовет предупреждение в вашем коде только при попытке получить доступ к свойству класса.

Если вы хотите вызвать ошибку, вы можете сделать это:

[Obsolete("Obsolete prop - Use quantity_float", true)]

Измените на false, если вы просто хотите изменить предупреждающее сообщение.

person NewGuy    schedule 10.06.2021

Обязательно обратите внимание на вашу настройку, если вы раскрываете только внутренние методы или веб-службы, но я стараюсь избегать внесения изменений в существующие контракты, так как со временем это становится беспорядком.

Рассмотрите возможность добавления версий для лучшей читабельности, модульности, разделения задач и т. д.

Вы также получите возможность для устаревших клиентов использовать новую версию в какой-то момент, когда она будет готова, что позволит полностью удалить устаревший код.

person Mike    schedule 10.06.2021