-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
POCOObservableForProperty.cs
31 lines (28 loc) · 1.16 KB
/
POCOObservableForProperty.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Reactive.Linq;
namespace ReactiveUI
{
class POCOObservableForProperty : ICreatesObservableForProperty
{
public int GetAffinityForObject(Type type, bool beforeChanged = false)
{
return 1;
}
static readonly Dictionary<Type, bool> hasWarned = new Dictionary<Type, bool>();
public IObservable<IObservedChange<object, object>> GetNotificationForProperty(object sender, string propertyName, bool beforeChanged = false)
{
var type = sender.GetType();
if (!hasWarned.ContainsKey(type)) {
this.Log().Warn(
"{0} is a POCO type and won't send change notifications, WhenAny will only return a single value!",
type.FullName);
hasWarned[type] = true;
}
return Observable.Return((IObservedChange<object, object>) new ObservedChange<object, object>() {
Sender = sender, PropertyName = propertyName
}, RxApp.DeferredScheduler)
.Concat(Observable.Never<IObservedChange<object, object>>());
}
}
}