无法将具有 Enum 属性的对象从存储库项目传递到服务结构服务

Posted

技术标签:

【中文标题】无法将具有 Enum 属性的对象从存储库项目传递到服务结构服务【英文标题】:Unable to pass an object with Enum Property from repository project to service fabric service 【发布时间】:2019-07-30 07:13:05 【问题描述】:

我有一个 Gender Enum 并试图将它从存储库层传递到服务方法的对象中。不过,我向它添加了 EnumMember 和 DataContract 属性。

出现以下错误。

不应使用数据合同名称“Gender:http://schemas.datacontract.org/2004/07/MyNamespace”键入“MyNamespace.Gender”。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。

【问题讨论】:

【参考方案1】:

您需要将KnownType 属性添加到使用枚举类型的DataContract 类。

[DataContract]
[KnownType(typeof(Shape))]
public class CompanyLogo

    [DataMember]
    private Shape ShapeOfLogo;
    [DataMember]
    private int ColorOfLogo;

这将在 WSDL 中公开枚举类型,以便服务的客户端了解您正在使用的类型。

或者,您可以将枚举转换为其基类型并将其公开为 int 而不是枚举值。

【讨论】:

以上是关于无法将具有 Enum 属性的对象从存储库项目传递到服务结构服务的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate 将会话传递到存储库

如何循环遍历传递给具有 Vuex 存储和计算属性的组件的对象数组?

验证 JSON 对象属性是不是包含在 Enum 中

如果数据属性在 VueJs 中从父组件传递到子组件,则无法将其作为对象进行操作

如何将枚举作为字符串参数传递给 Authorize 属性?

将 @State 属性的 @Binding 值从容器视图传递到其子视图