如何创建一个具有只能具有特定值的属性的对象

时间:2016-03-30 13:19:36

标签: c# wpf vb.net oop mvvm

最初它看起来对我来说是一个简单的问题,但我想的越多,我对实现我想要的最佳方式感到困惑。

我们正在WPF

之后创建一个MVVM应用程序

所以情节是 -

我们有一个类MyClass,其类型为Complex,但它还有Category类型int的属性。

Public Class MyClass

    Public Property Category As Integer
    Public Property MyProperty As Complex

End Class

现在MyProperty只能根据其类别拥有特定值。 我们有一个对象列表,其中包含针对每个类别的MyProperty的所有可能值。

我的问题是考虑MVVM,这个可能的项目列表放在哪里? 我们应该将它作为一个新属性的一部分,它具有MyProperty的所有可能值,然后在设置属性时进行检查吗?或其他地方?

Public Property AvailablePropertyValues As IEnumerable(Of Complex)

将它保持在对象中会使我们将此对象绑定到视图时非常简单,因为我们不必过滤列表但我知道过滤每个项目的列表很简单,我们不应该考虑创建的简单性在建模对象时查看。

关于如何建模对象的任何想法?

1 个答案:

答案 0 :(得分:0)

我认为你应该让屏幕上显示的所有数据来自viewmodel通过绑定,包括你想要选择的可能选择,以及实际选择的值,然后通过setter进行验证(&通过实现IValidatableObject接口,我可以看到设置器用于,基于输入值插入自定义验证逻辑或更好,所以你也可以获得无效值的UI通知。

对于IValidatableObject,您可以看到主题http://weblogs.asp.net/scottgu/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3http://msprogrammer.serviciipeweb.ro/2012/03/19/ivalidatableobject-and-idataerrorinfo/