gpt4 book ai didi

.net - 将WCF与抽象类一起使用

转载 作者:行者123 更新时间:2023-12-03 11:51:53 26 4
gpt4 key购买 nike

如何在WCF中为抽象类定义DataContract?

我有一类“人”,可以使用WCF成功进行通信。现在,我添加了从Person引用的新类“Foo”。一切还不错。但是,当我使Foo抽象并定义一个子类时,它将失败。它在服务器端失败并显示CommunicationException,但这并不能告诉我很多。

我为测试而设计的简化类:

[DataContract]
public class Person
{
public Person()
{
SomeFoo = new Bar { Id = 7, BaseText = "base", SubText = "sub" };
}

[DataMember]
public int Id { get; set; }

[DataMember]
public Foo SomeFoo { get; set; }
}

[DataContract]
public abstract class Foo
{
[DataMember]
public int Id { get; set; }

[DataMember]
public string BaseText { get; set; }
}

[DataContract]
public class Bar : Foo
{
[DataMember]
public string SubText { get; set; }
}

最佳答案

我想到了。您需要使用“KnownType”在抽象基类上指定子类。解决方案是将其添加到Foo类上:

[DataContract]
[KnownType(typeof(Bar))] // <------ added
public abstract class Foo
{
[DataMember]
public int Id { get; set; }

[DataMember]
public string BaseText { get; set; }
}

checkout this link

关于.net - 将WCF与抽象类一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3101756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com