【问题标题】:Obsolete Handling on field name in c #c#中字段名称的过时处理
【发布时间】:2021-06-10 11:02:49
【问题描述】:

我一直在为过时的处理而苦苦挣扎,我知道 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

select count(quantity_float) from salestransactionstep

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

【问题讨论】:

  • 旁注:您不应该公开字段,而是使用属性。
  • ObsoleteAttribute 不适用于客户。您是在询问数据库更改的向后兼容性还是其他问题?

标签: c# obsolete


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    考虑添加版本控制以获得更好的可读性、模块化、关注点分离等。

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

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多