2008-10-20 33 views
3

本地化集合(IEnumerable)的最佳方式是什麼? 從BL中檢索仍需要本地化的實體集合,我想我編寫了一種擴展IEnumerable並返回本地化列表的方法。本地化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); 
} 

回答

2

你試過什麼東西嗎yield該物品?

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

這不會改變任何其他集合中的項目你列舉了,但它會回報你希望它是什麼。

+0

糾正我,如果我錯了,但不會此解決方案重新計算本地化每次遍歷枚舉的時間?聽起來像他想要的是一個已經本地化的不同的可枚舉集合。 – tvanfosson 2008-10-20 20:10:54

1

簡單的改變讓它返回本地化值的新枚舉集合:

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; 
} 
相關問題