Создать наблюдаемый для потокового класса в Net Core - PullRequest
0 голосов
/ 09 октября 2019

Как мне создать Observable для класса? Например, вот класс для непрерывных продаж

public class Product
{
     public int ProductId {get;set;}
     public string ProductDescription {get;set;}
     public float Sales{get;set;}
}

Как создать Observable? Скажем, они входят в List<Product> с помощью Add (), продукты продолжают добавляться в виде транзакций.

В любое время продукт добавляется в любом месте Консольной программы, подписчик будет наблюдать его.

var productSample1 = new Product { ProductId = 1, ProductDescription = "Furniture" };
var productSample2 = new Product { ProductId = 2, ProductDescription = "Book" };
var productSample3 = new Product { ProductId = 3, ProductDescription = "car" };

var productlist = new List<Product>();
productlist.Add(productSample1);
....
productlist.Add(productSample2);
...
productlist.Add(productSample3);

Может быть, что-то вроде этого,

var products = Observable.FromEventPattern < EventHandler<Product>, Product>();

Попытка прочитать ресурсы ниже, попытка добавить,

Генерация чисел через случайные интервалы времени с помощью rx

Введение в Rx

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете использовать ObservableCollection :

var list = new ObservableCollection<int>();
using (var o = Observable
    .FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(h => list.CollectionChanged += h, h => list.CollectionChanged -= h)
    .Subscribe(e => Console.WriteLine($"{e.EventArgs.Action} {e.EventArgs.NewItems[0]}")))
{
    list.Add(1);
    list.Add(10);
}

// Add 1
// Add 10

Или перевернуть его и добавить из подписки:

var list = new List<int>();
var subject = new Subject<int>();
using (var o = subject.Subscribe(i => list.Add(i)))
{
    subject.OnNext(1);
    subject.OnNext(10);
}

foreach (var i in list)
{
    Console.WriteLine(i);
}

// 1
// 10
...