如何在这样的场景中执行多态:
如果我在名称空间Foo中有一个Dachshund类,它继承自Name Bar中的类Dog:
namespace Bar
{
public class Dog
{
public string Color { get; set; }
public string Bark { get; set; }
}
}
namespace Foo
{
public class Dachshund : Dog
{
public int Length { get; set; }
}
}
我用Dachshund做一些狗的东西,但作为一只狗通过wcf,是什么给出的?一些序列化问题:
[ServiceBehavior]
public class myWcfService : ImyWcfService
{
[OperationBehavior]
public Message GetDog()
{
var myDach = new Dachshund();
// do some stuff with my dach
return new Message { Dog = myDach as Dog, Message = "I'm sending a dog" };
}
}
public class Message
{
public Dog Dog { get; set; }
public string Message { get; set; }
}
答案 0 :(得分:1)
您需要将[ServiceKnownType]
属性添加到服务合同(定义服务操作的接口,而不是服务实现(实际类) ):
[ServiceContract]
[ServiceKnownType(typeof(Dachshund))] // <- Add this attribute
public interface ImyWcfService
{
//...
}
这足以让DataContractSerializer“知道”你的类并能够正确地序列化/反序列化它。