Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

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

$
0
0

最近BlogがReactivePropertyのリリース日記になってる感じがありますが…。v2.1.8をリリースしました。

ReactivePropertywww.nuget.org

v2.1.8

追加

  • Helpers名前空間にリアルタイムにコレクションの要素をフィルタリングするコレクション FilteredReadOnlyObservableCollectionを追加しました。

解説

ObserveElementXXXXメソッドを追加したときに、コレクションの増減に対応するコードまで入れるとリアルタイムにコレクションから条件を満たす要素を選択できるという例を示しました。

ReactiveProperty v2.1.3をリリースしました - かずきのBlog@hatenaokazuki.hatenablog.com

このコードに順序の管理を加えて、リアルタイムフィルタリングをするコレクションを作成しました。

テストコードからの抜粋になりますが、以下のように使います。

var source = new ObservableCollection<Person>(new[]
{
    new Person { Name = "tanaka1", IsRemoved = true },
    new Person { Name = "tanaka2", IsRemoved = false },
    new Person { Name = "tanaka3", IsRemoved = false },
});

// 初期状態ではtanaka1のみが対象
var filtered = source.ToFilteredReadOnlyObservableCollection(x => x.IsRemoved);
filtered.Select(x => x.Name).Is("tanaka1");
filtered.Count.Is(1);

// 無関係の要素を追加しても変わらない
source.Add(new Person { Name = "tanaka4", IsRemoved = false });
filtered.Select(x => x.Name).Is("tanaka1");
filtered.Count.Is(1);

// プロパティを変更してフィルターの対象になった場合は、その要素が追加される
source[3].IsRemoved = true;
filtered.Select(x => x.Name).Is("tanaka1", "tanaka4");
filtered.Count.Is(2);

source.Clear();
filtered.Count.Is(0);

Viewing all articles
Browse latest Browse all 1387

Trending Articles