c# - 在 Net Core 中为 Streaming 类创建 Observable
问题描述
如何为类创建 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>();
尝试阅读下面的资源,尝试添加,
解决方案
您可以使用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
推荐阅读
- javascript - 获取“基本”网址Angular 5
- r - 带有逗号但没有小数的轴标签ggplot
- python - Python PyPDF2寻找已关闭文件错误
- c# - 内存映射文件不会触发 FileSystemWatcherChanged 事件
- php - PDO 限制查询在执行中使用绑定不起作用
- go - 我如何在golang中反思性地创建枚举实例?
- java - 返回列表时Springboot findBY不起作用
- c - 类似于 Windows Git Bash 中的 C 控制台
- php - Laravel 需要 php56-mcrypt,但是我无法安装 php56-mcrypt
- c - 调用 free() 会因“无效指针”而崩溃