【发布时间】:2010-09-22 12:18:22
【问题描述】:
我想从位于 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; }
}
}
客户端上的类(Dog 继承自 Pet):
[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,它表示BringPet(Pet pet) 方法不需要类型Dog。
我会通过在服务端设置KnownType 属性来解决这个问题,但是因为我的服务一定不知道Dog 的类型,所以我无法设置KnownType 或ServiceKnownType 属性。
谁能帮帮我?
【问题讨论】:
标签: c# .net wcf inheritance