BindingValueExtensions.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Reactive.Subjects;
  3. using Avalonia.Data;
  4. #nullable enable
  5. namespace Avalonia.Reactive
  6. {
  7. public static class BindingValueExtensions
  8. {
  9. public static IObservable<BindingValue<T>> ToBindingValue<T>(this IObservable<T> source)
  10. {
  11. source = source ?? throw new ArgumentNullException(nameof(source));
  12. return new BindingValueAdapter<T>(source);
  13. }
  14. public static ISubject<BindingValue<T>> ToBindingValue<T>(this ISubject<T> source)
  15. {
  16. source = source ?? throw new ArgumentNullException(nameof(source));
  17. return new BindingValueSubjectAdapter<T>(source);
  18. }
  19. public static IObservable<object?> ToUntyped<T>(this IObservable<BindingValue<T>> source)
  20. {
  21. source = source ?? throw new ArgumentNullException(nameof(source));
  22. return new UntypedBindingAdapter<T>(source);
  23. }
  24. public static ISubject<object?> ToUntyped<T>(this ISubject<BindingValue<T>> source)
  25. {
  26. source = source ?? throw new ArgumentNullException(nameof(source));
  27. return new UntypedBindingSubjectAdapter<T>(source);
  28. }
  29. }
  30. }