public static IActiveValue <TResult> ActiveCastOrDefault <TResult>(this IActiveValue <object> source, TResult defaultValue = default(TResult)) => source.ActiveSelect(value => value is TResult ? (TResult)(object)value : defaultValue);
public static IActiveValue <TSource> ActiveDo <TSource>(this IActiveValue <TSource> source, Action <TSource> doAction, IEnumerable <string> sourcePropertiesToWatch) => source.ActiveSelect(s => { doAction.Invoke(s); return(s); }, sourcePropertiesToWatch);