LocalizedShippingMethod

LocalizedShippingMethod

我在一个应用程序中有一个类-无法更改(旧),该类位于程序集(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

09-04 16:25