我有一个DataContract,我将其用作WCF服务的返回类型。
[DataContract]
public NameResult
{
[DataMember]
public string Name { get; set; }
}
但是,我想在服务端存储其他信息,因此我创建了一个子类:
internal ServiceNameResult : NameResult
{
internal Guid ID { get; set; }
}
但是,似乎我无法将此实例用作结果值(我在客户端上获得的错误不是很有用 - 无法识别的错误109(0x6d)。
基本上,如果我这样做;
NameResult GetName()
{
NameResult result = {...}
return result;
}
然后它有效,但如果我这样做;
NameResult GetName()
{
ServiceNameResult result = {...}
return result;
}
没有。我真的不想将ServiceNameResult中的属性复制到新的NameResult。希望有一种方法可以使这项工作?
我已经将[IgnoreDataMember]放在了子类上,但没有区别。
感谢。
答案 0 :(得分:0)
您需要将ServiceNameResult定义为known type
答案 1 :(得分:0)
以下是解决此问题的一种方法。您可以使用合成来实现您的目标:
internal class ServiceNameResult
{
object OtherInformation { get; set; }
NameResult Result { get; set; }
}
因此,您的内部服务实现可以包含对客户端返回对象的引用以及其他信息,但您不会污染您的接口。