c#中对字段名称的过时处理

问题描述

我一直在为过时的处理而苦苦挣扎,我知道在 c# 中过时的用法是什么。但我的问题不是 obsolete is management 的用法

我有一个类,例如 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

select count(quantity_float) from salestransactionstep

但在我看来,我没有正确管理这种用法。那么我该如何管理,正确处理过时的字段?

解决方法

您目前使用它的方式,只会在您尝试访问类的属性时在您的代码中触发警告。

如果你想触发一个错误,你可以这样做:

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

如果您只想更改警告消息,请更改为 false。

,

请注意您的设置,如果您只公开内部方法或网络服务 - 但我尽量避免对现有合同进行更改,因为随着时间的推移维护起来会变得一团糟。

考虑添加版本控制以提高可读性、模块化、关注点分离等。

您还可以获得“旧客户端”的选项,以便在准备好后在某个时候使用新版本,这样就可以一起删除旧代码。