public void OnSubtypeChangedTest() { bool isCalled = false; var factory = new PropertyFactory(); var prop = new SubtypingProperty(typeof(MyBase), factory, new Type[] { typeof(MyDerived) }); var vm = new SubtypingViewModel(prop, new ViewModelFactory(factory, false)); vm.OnChanged.Subscribe(x => isCalled = true); prop.SelectedType.Value = prop.AvailableTypes.First(); isCalled.IsTrue(); prop.Model.Value.IsInstanceOf <ClassProperty>(); var members = (prop.Model.Value as ClassProperty).Members; isCalled = false; var memberX = (IntProperty)members.First(x => x.PropertyInfo.Name == nameof(MyClass.X)); memberX.IntValue.Value = 99; isCalled.IsTrue(); isCalled = false; var memberY = (IntProperty)members.First(x => x.PropertyInfo.Name == nameof(MyClass.Y)); memberY.IntValue.Value = 81; isCalled.IsTrue(); }
public void Subtypeをモデルに書きこむことができる() { var types = new[] { typeof(Subtype1), typeof(Subtype2) }; var subtypeModel = new SubtypingProperty(typeof(Subtyping), new PropertyFactory(), types); subtypeModel.OnError.Subscribe(x => { throw x; }); Load(subtypeModel, new Subtype2() { Z = 12 }); subtypeModel.SelectedType.Value.Type.Is(typeof(Subtype2)); subtypeModel.SelectedType.Value.Name.Is("Z2"); var subtype = subtypeModel.Model.Value.Value.Value.IsInstanceOf <Subtype2>(); subtype.Z.Is(12); }