かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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!!