public void TestMulticst() { SubjectBase <int> subject = new SubjectA <int>(); Observer <int> observer1 = new Observer <int>(); observer1.State = 10; Observer <int> observer2 = new Observer <int>(); observer2.State = 20; // Attach Observer subject += observer1; subject += observer2; // 确认通知的有效性 subject.Update(1); Assert.AreEqual <int>(1, observer1.State); Assert.AreEqual <int>(1, observer2.State); // 确认变更通知列表后的有效性 subject -= observer1; subject.Update(5); Assert.AreNotEqual <int>(5, observer1.State); Assert.AreEqual <int>(5, observer2.State); }
public static void Main(string[] args) { SubjectA subject = new SubjectA(); subject.AttachObserver(new ObserverA()); subject.AttachObserver(new ObserverB()); subject.SendMessage("Hello, World!"); }
static void Main(string[] args) { // Subject // Na zmenu tohohle subjektu SubjectA sA = new SubjectA(); // Observers.. // Budou reagovat tito pozorovatele ObserverA oA = new ObserverA(sA); ObserverB oB = new ObserverB(sA); // Modification 1 sA.SetValue(10); // Register can return IDisposable Unregister class // Unregister sA.Unregister(oA); // Modification 2 sA.SetValue(42); // -- Console.ReadLine(); // // ---- // Game g = new Game(); // Players Player kuz1 = new Player(nameof(kuz1)); Player mar5 = new Player(nameof(mar5)); Player kor1 = new Player(nameof(kor1)); Player tes2 = new Player(nameof(tes2)); Player cvr1 = new Player(nameof(cvr1)); // Still without observers g.AddPlayer(kuz1); // Observers Table table = new Table(g); Radio radio = new Radio(g); // With observers g.AddPlayer(kor1); g.AddPlayer(tes2); g.AddPlayer(cvr1); g.RemovePlayer(tes2); g.AddPlayer(mar5); g.RemovePlayer(mar5); // -- Console.ReadLine(); }
private void Start() { SubjectA sA = new SubjectA(); ObserverA oA = new ObserverA(sA); //ObserverB oB = new ObserverB(sA); sA.AttachObserver(oA); sA.AttachObserver(new ObserverB(sA)); sA.SetSubjectName("状态2"); }
public void TestMultiSubject() { SubjectBase <int> subjectA = new SubjectA <int>(); SubjectBase <int> subjectB = new SubjectA <int>(); Observer <int> observer = new Observer <int>(); observer.State = 20; subjectA += observer; subjectB += observer; subjectA.Update(10); Assert.AreEqual <int>(10, observer.State); subjectB.Update(5); Assert.AreEqual <int>(5, observer.State); }
public void Verify() { var serializer = new ConfigurationContainer(Extensions.Default.ToArray()) .Type <BaseSubject>() .Member(x => x.IgnoreThisEverywhere) .Ignore() // <-- This doesn't work //.Type<ISubject>().Member(x => x.IgnoreThisEverywhere).Ignore() // <-- This works .Type <SubjectA>() .Member(x => x.IgnoreThisForSubset) .Ignore() .Create() .ForTesting(); var subjectA = new SubjectA { IgnoreThisEverywhere = "Should NOT see this" }; var subjectB = new SubjectB { IgnoreThisForSubset = "Should see this", IgnoreThisEverywhere = "Should NOT see this" }; var parent = new Parent { IgnoreThisForSubset = "Should see this", Commands = new List <ISubject> { subjectA, subjectB } }; var cycled = serializer.Cycle(parent); cycled.IgnoreThisEverywhere.Should().BeNull(); cycled.Commands[0].IgnoreThisEverywhere.Should().BeNull(); cycled.Commands[1].IgnoreThisEverywhere.Should().BeNull(); }
public ObserverB(SubjectA s) { m_subject = s; }