Как лучше всего локализовать коллекцию (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);
}





вы пробовали что-то, где вы урожай пункт?
public static IEnumerable<string> Localize(this IEnumerable<string> items, CultureInfo culture)
{
foreach (string item in items)
{
yield return ResourceHelper.GetString(item,culture);
}
}
это не изменит никакие другие элементы в коллекции, которую вы перечисляете, но вернет то, что вы хотите.
yield - это ключевое слово C# Ninja ... nice ...!
Простое изменение, чтобы заставить его возвращать новую ienumerable коллекцию локализованных значений:
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;
}
Поправьте меня, если я ошибаюсь, но разве это решение не будет пересчитывать локализацию каждый раз, когда вы перебираете перечислимое? Похоже, ему нужна другая перечисляемая коллекция, которая была локализована.