PG日誌

読者です 読者をやめる 読者になる 読者になる

PG日誌

主にc#の事を書いています

ObservableCollectionにAddRangeを追加する

c#

タイトルの通りなんですが、ObservableCollectionやIListにはAddRangeが無いんですよね。WPFでObservableCollectionの入れ替えを毎回foreachでやってたら憤死しそうにりました。けっこう前から結構不便に感じていたのでライブラリ作りました。

f:id:Takachan:20160721155544p:plain

こんな感じです。

/// <summary>
/// 配列用の汎用機能を提供します。
/// </summary>
public static class ArrayUtility
{
    /// <summary>
    /// 指定したコレクションを全て格納します。
    /// </summary>
    public static void AddRange<T>(this ICollection<T> collection, ICollection<T> target)
    {
        foreach (var item in target)
        {
            collection.Add(item);
        }
    }

    /// <summary>
    /// 指定したコレクションを変換して格納します。
    /// </summary>
    public static void AddRange<T, S>(this ICollection<T> collection, ICollection<S> target, Func<S, T> convert)
    {
        foreach (var item in target)
        {
            collection.Add(convert(item));
        }
    }
}

同じ型同士をAddRangeする場合と、違う型へ変換する場合、最後に変換規則を指定して呼び出します。
Listの拡張メソッドと名前が完全にぶつかる気がしますが、どうなるんでしょうね?(汗)

広告を非表示にする