public void ShouldReturnDefaultOrNullForUninitializedDynamicProperties()
        {
            // Arrange
            var obj = new MyObservableObject(false, null);

            // Assert/Assert
            Assert.That(obj.GetDynamicValue <int>("SomeProp"), Is.EqualTo(default(int)));
            Assert.That(obj.GetDynamicValue <int?>("SomeOtherProp"), Is.Null);
            Assert.That(obj.GetDynamicValue <string>("SomethingElse"), Is.Null);
        }
        public void ShouldClearDynamicPropertiesOnDispose()
        {
            // Arrange
            var obj = new MyObservableObject(false, null);

            obj.SetDynamicValue <object>("ObjectProp", new ObservableObjectBase());
            Assert.That(obj.GetDynamicValue <object>("ObjectProp"), Is.Not.Null);

            // Act
            obj.Dispose();

            // Assert
            Assert.That(obj.GetDynamicValue <object>("ObjectProp"), Is.Null);
        }
        public void ShouldGetSetDynamicProperties()
        {
            // Arrange
            var obj = new MyObservableObject(false, null);

            // Act
            obj.SetDynamicValue <int>("SomeProp", 123);

            // Assert
            Assert.That(obj.GetDynamicValue <int>("SomeProp"), Is.EqualTo(123));
        }