gpt4 book ai didi

c# - 从类继承并添加附加属性

转载 作者:行者123 更新时间:2023-11-30 17:07:13 26 4
gpt4 key购买 nike

我在一个应用程序中有一个类 - 我无法更改(遗留) - 它位于程序集(DLL 文件)内:

public class ShippingMethod
{
public string ShipMethodCode { get; set; }
public string ShipMethodName { get; set; }
public decimal ShippingCost { get; set; }

public List<ShippingMethod> GetAllShippingMethods()
{
......
}
}

我有第二个应用程序引用该程序集(DLL 文件)并且需要使用所有运输方式填充下拉列表。例如:“UPS - 3.25 美元”

问题是它需要为不同的货币使用正确的格式。例如:3.25 美元或 3.25 欧元,具体取决于名为 CountryID 的参数。

我编写了一个函数 String DisplayMoney(Decimal Amount, Integer CountryID),它将返回金额的正确格式。

现在我需要将这个函数应用到每个运输方式并将其保存到一个新列表中。执行此操作的最佳方法是什么?

我可以创建另一个名为 LocalizedShippingMethods 的类,如下所示:

public class LocalizedShippingMethod
{
public ShippingMethod ShipMethod { get; set; }
public string LocalizedShippingCost { get; set; }
}

这是实现此目标的最佳方式吗?有没有更好的方法使用继承来做到这一点?如果我使用继承,我如何将第一个 LIST 中的值获取到 NEW LIST 中?

最佳答案

这确实是一个很好的方法。您可以使用非常快速的 Linq 查询将旧的 List 拉入新的列表:

List<LocalizedShippingMethod> Translate(List<ShippingMethod> oldList)
{
return oldList.Select(a => new LocalizedShippingMethod
{
// Initialize properties according to however you translate them
}).ToList();
}

此外,为了使它更加精简和明显,您可以执行以下任一操作来帮助翻译:

  • LocalizedShippingMethod 创建一个构造函数,它接受一个 ShippingMethod 并正确设置属性
  • LocalizedShippingMethod 上创建一个静态方法,它接受一个 ShippingMethod 并返回一个初始化的 LocalizedShippingMethod
  • LocalizedShippingMethod 上创建一个从 ShippingMethod 转换而来的运算符
  • ShippingMethod 上创建一个扩展方法,调用它 ToLocalized() 返回一个 LocalizedShippingMethod

关于c# - 从类继承并添加附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com