C# 未定义枚举&;WPF组合框&;WCF序列化
我在寻找处理WPF和WCF上的枚举字段的通用解决方案时遇到问题,我需要一些帮助。让我们用一个例子来解释: 当创建一个具有性别枚举值[男性,女性]的人时,我会看到三种可能性:C# 未定义枚举&;WPF组合框&;WCF序列化,c#,wpf,wcf,enums,combobox,C#,Wpf,Wcf,Enums,Combobox,我在寻找处理WPF和WCF上的枚举字段的通用解决方案时遇到问题,我需要一些帮助。让我们用一个例子来解释: 当创建一个具有性别枚举值[男性,女性]的人时,我会看到三种可能性: 男性为默认值->有两种可能性,但一种是默认值。绑定ComboBox.SelectedValue没有问题,WCF序列化也没有问题,只要不需要:) ((性别)(3))未定义的值是默认值->有两个可能性,但在开始时用户被迫选择一个。ComboBox.SelectedValue正确设置SelectedIndex=-1,但WCF抛出:
- 为性定义“未知”值,这个值对于实体无效,我会考虑它是否不是最常见的方案。<李>
- 将枚举标记为[Flags],以便WCF可以将“男性,女性”编码为未知
- 用类似于[CombohintunknowNownNew]的东西装饰性财产
- 设置SelectedIndex=-1,同时在WPF中保持绑定的某些方式李>
我知道这是一个思想设计决策,不是一个具体的问题,但我希望能得到一些帮助。为视图定义一个客户端枚举(未定义为-1),然后根据选择的性别创建适当的WCF代理枚举,然后将其发送到服务。因此,不要直接将数据绑定到WCF代理类。创建仅客户端模型并转换为有效实体(WCF代理类)是非常有效的。您可以使用automapper之类的工具轻松完成此操作。到目前为止,我们找到了以下解决方案:
Sex Sex {get; set;} //Default Male
Sex? Sex {get; set;} //Optional field, none is available in the combobox
[NotNullValidator]
Sex? Sex {get; set;} //Default is null, so SelectedIndex=-1 and can be sent via WCF, but the combo does not have the 'none' option and once one Sex is selected u can not turn back.
很抱歉提出了这样一个抽象且难以回答的问题您能在这里解释一下您是如何使用WCF的,并提供一些XAML吗?通过WCF发送并在WPF中显示的枚举属性没有任何问题。如果枚举未定义,则显然必须强制用户在序列化之前选择一个值,但必须在开始时写入。您能用一些代码/XAML解释一下吗?由于构建通用解决方案的目的,我们希望能够将不完整的实体发送到服务器,例如,了解该实体是否经过授权,或者哪些操作可用。很难选择一段简单的代码,但要求能够在实体属性本身中编码树描述的解决方案,能够知道用户是否选择了一个jet。到目前为止,我们成功地保持了视图的相同模型,传输到服务器和服务器本身(www.signumframework.com)我们希望保留这一点。通过这种方式,我们在一个地方就有了验证规则。