【问题标题】:What is the best way to localize an IEnumerable?本地化 IEnumerable 的最佳方法是什么?
【发布时间】:2010-09-18 04:31:57
【问题描述】:

本地化集合 (IEnumerable) 的最佳方法是什么? 从 BL 我检索仍然需要本地化的实体集合,我想我编写了一个扩展 IEnumerable 并返回本地化列表的方法。

我怎样才能让下面的代码工作?有任何想法吗?也许更好的选择?

public static IEnumerable Localize(this IEnumerable items, CultureInfo cultureInfo)
{
    foreach(string item in items)
    {
        /*Error underneath, cannot assign to item*/
        item = ResourceHelper.GetString(item, cultureInfo);
    }
    return (items);
}

【问题讨论】:

    标签: .net-3.5 collections c#-3.0 ienumerable localization


    【解决方案1】:

    你有没有尝试过yield该项目?

    public static IEnumerable<string> Localize(this IEnumerable<string> items, CultureInfo culture)
    {
        foreach (string item in items)
        {
            yield return ResourceHelper.GetString(item,culture);
        }
    }
    

    这不会更改您正在枚举的集合中的任何其他项目,但它会返回您想要的内容。

    【讨论】:

    • 如果我错了,请纠正我,但这个解决方案不会在您每次迭代可枚举时重新计算本地化吗?听起来他想要的是一个不同的已本地化的可枚举集合。
    • yield 是 C#s Ninja 关键字...不错...!
    【解决方案2】:

    简单的改变让它返回一个新的可枚举的本地化值集合:

    public static IEnumerable<string> Localize(this IEnumerable<string> items, CultureInfo cultureInfo)
    {
        List<string> newItems = new List<string>();
        foreach(string item in items)
        {
           newItems.Add( ResourceHelper.GetString(item, cultureInfo) );
        }
        return newItems;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-02
      • 2020-04-28
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      相关资源
      最近更新 更多