かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

ReactiveProperty v2.1.5をリリースしました

NuGet Gallery | ReactiveProperty 2.1.5

2.1.4はちょんぼをしてしまったので欠番です。はい。

v2.1.5

追加

  • IEnumerableからReadOnlyReactiveCollectionを作成する拡張メソッドを追加しました。

解説

今までReadOnlyReactiveCollectionはObservableCollectionかReadOnlyObservableCollectionからしか作成できませんでした。ということで、Livetみたいに自前でコレクションを実装しちゃってるようなライブラリのコレクションからReadOnlyReactiveCollectionを作るのは不可能(自分でやれば出来るけど…)でした。

ということで、今回はIEnumerable + CollectionChangedの組合わせで、ReadOnlyReactiveCollectionを作れるようにしました。

using Livet;
using Reactive.Extensions;



var source = new ObservableSynchronizedCollection<string>();
source.Add("aaa");
source.Add("bbb");

var coll = source.ToReadOnlyReactiveCollection(
    source.ToCollectionChanged<string>(),
    x => x + "!!",
    Scheduler.CurrentThread);

Console.WriteLine("{0} {1}", coll[0], coll[1]); // aaa!! bbb!!

source.Move(1, 0);

Console.WriteLine("{0} {1}", coll[0], coll[1]); // bbb!! aaa!!