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);
        }
예제 #2
0
    public static void Main(string[] args)
    {
        SubjectA subject = new SubjectA();

        subject.AttachObserver(new ObserverA());
        subject.AttachObserver(new ObserverB());

        subject.SendMessage("Hello, World!");
    }
예제 #3
0
        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();
        }
예제 #4
0
    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();
        }
예제 #7
0
 public ObserverB(SubjectA s)
 {
     m_subject = s;
 }