using System.Collections.Generic;
using System.Reactive.Linq;
public static class DeclaredProperties<T> {
public static List<string> Names = typeof(T).GetProperties
( System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.DeclaredOnly ).Select(p=>p.Name).ToList();
public static class RxUIExtensions {
public static IObservable<T> WhenAnyChanged<T>(T source) where T : ReactiveObject
=> source.Changed.Where(ev => DeclaredProperties<T>.Names.Contains(ev.PropertyName));
public static class Program
public static IEnumerable<int> Infinite(){
public static IEnumerable<int> FilterFactors(this IEnumerable<int> source, IList<int> factors){
source.Where(i=>factors.Any(f=>i%f==0));
public static void Main()
.FilterFactors(new []{3,5})