我想從位於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