我有一个Wcf服务,可以作为RestApi
使用[KnownType(typeof(myClass1))]
[KnownType(typeof(myClass2))]
[KnownType(typeof(myClassAndOther23typesOmmited))]
[DataContract]
public class ApiResult
{
[DataMember]
public bool Success { get; private set; }
[DataMember]
public object Result { get; private set; }
}
字段Result
是有问题的部分,它不能被序列化,因为它是对象类型。所以问题是,如何返回正确的ApiResult
对象。
当我尝试将KnownTypeAttribute
分配给ApiResult string[]
字段并返回客户端时,有Result
,服务抛出 SerializationException 。
尝试ApiResult<T>
后
服务编译成功,intellisense给出了这个
经过一些调查后,我们收集到那些奇怪的类型名称,以避免服务中的冲突(它是由GetHash()
字面对象实现的简单类型哈希码,
这是对 nvoigt 解决方案的回应,因为无法插入图片进行评论
答案 0 :(得分:2)
为什么不创建通用的ApiResult:
[DataContract]
public class ApiResult<T>
{
[DataMember]
public bool Success { get; internal set; }
[DataMember]
public T Result { get; internal set; }
}
这样,您的方法实际上可以返回类似ApiResult<myClass1>
的类型值,而您根本不需要任何KnownType
。