我想从位于WCF服务中的类继承。继承工作正常(我看到我的子类中的基类的属性),当我尝试从服务调用方法并将childtype作为参数传递而不是基类型时,会发生问题。在WCF服务继承wcf服务中的类
基类(Pet
):
[ServiceContract]
public interface IService
{
[OperationContract]
void BringPet(Pet pet);
[OperationContract]
void TakePet(Pet pet);
[OperationContract]
List<Pet> GetAllPets();
}
[DataContract]
public class Pet
{
private string _name;
private string _color;
[DataMember]
public string Name
{
get { return _name; }
set { _name = value; }
}
[DataMember]
public string Color
{
get { return _color; }
set { _color = value; }
}
}
类客户端(从Pet
Dog
继承):
[DataContract()]
class Dog : PetService.Pet
{
[DataMember()]
public bool HasPedigree { get; set; }
[DataMember()]
public string Race { get; set; }
}
当我尝试调用是这样的:
Dog dog = new Dog()
{
Color = "Black",
Name = "Pluto",
HasPedigree = true,
Race = "Travolta"
};
_client.BringPet(dog);
我收到一个CommunicationException
其中说Dog
类型不是由方法BringPet(Pet pet)
预期的。 我会通过在服务端设置KnownType
属性来解决此问题,但由于我的服务不能知道类型Dog
我无法设置KnownType
或ServiceKnownType
属性。
有人可以帮我吗?
谢谢,我会试一试。 – danjov 2010-09-22 12:59:05
嗨,@stombeur,也许你可以看看这里吗?http://stackoverflow.com/questions/42294978/lack-of-sent-field-from-sublcass-in-wcf-trying-to-gain-polymorphism?noredirect = 1个#comment71750175_42294978 – 2017-02-17 13:48:42