Я просто пытаюсь создать простой обработчик событий для строковой переменной, чтобы в случае изменения строки она выполняла Console.WriteLine (используя новую библиотеку Reactive от MS (Rx))
Проблема, с которой я столкнулся, заключается в том, что он будет отображать первый бит, когда я создаю экземпляр класса («RandomGuid: Mine?»), Но после этого ни одна из вещей, которые я изменяю, впоследствии не выплевывает что-либо на консоль.
Я прошел через HOL с веб-сайта MS, но он идет от определения Observable к чтению значений из текстового поля, когда все, что я хочу сделать, это посмотреть, была ли изменена строка.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MynahBirds
{
class Program
{
static void Main(string[] args)
{
List<Minah> minahs = new List<Minah>();
for (int i = 0; i < 10; i++) {
minahs.Add(new Minah());
}
foreach (var item in minahs) {
item.peers = minahs;
}
minahs.ForEach(m => m.s = Observable.Return<string>("Mine"));
minahs.ForEach(m => m.s = Observable.Return<string>("Whee"));
minahs.ForEach(m => m.s = Observable.Return<string>("Argh"));
Console.ReadLine();
}
}
class Minah
{
Guid Id;
public List<Minah> peers;
IDisposable subscription;
public IObservable<string> s = Observable.Return<string>("Mine?");
public Minah()
{
try {
this.Id = Guid.NewGuid();
subscription = s.Subscribe((string a) => {
Console.WriteLine("{0} : {1}", this.Id, a);
},
(Exception ex) => {
Console.WriteLine("Error {0} hit", ex.ToString());
},
() => { });
} catch (Exception ex) {
Console.WriteLine(ex.ToString());
Console.ReadLine();
throw;
}
}
}
}