酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

IEnumerable から ObservableCollection への変換が面倒な件について

(追記)表題の件はWindows Phone OS 7.0向けアプリケーションでの話になります。Windows Phone OS 7.1向けのアプリケーションでは問題なく変換できます。

WPFなら下記のように、List<T>をObservableCollection<T>へ変換することが出来るらしいのですが、Windows Phoneでは出来ません。

var enumerable = new List<string>();
var observable = new ObservableCollection<string>(enumerable);

上記のコード相当を綺麗に実装する方法が思い当らなかったので、foreachでグルグルと回す実装にしてしまいました。

さすがに色んなところで同じ処理を書くのはアレだったので、拡張メソッド化してしまいましたが、根本的にこの実装はどうなんだろう。

    public static class CollectionExtensions {
        public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerableList) {
            if (enumerableList == null) {
                return null;
            }
            var observableCollection = new ObservableCollection<T>();
            foreach (var item in enumerableList)
                observableCollection.Add(item);

            return observableCollection;
        }
    }

そもそもIEnumerableからObservableCollectionへ変換するなと、いうレベルの問題だったりするのでしょうか。