无法将具有 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 属性的对象从存储库项目传递到服务结构服务的主要内容,如果未能解决你的问题,请参考以下文章
如何循环遍历传递给具有 Vuex 存储和计算属性的组件的对象数组?