积极答复者
在WCF协议中传继承类的对象的问题

问题
-
不知道题目有没有说清楚。
总之看代码吧。
[DataContract]
public class Person
{
[DataMember]
public int id;
[DataMember]
public int name;
}然后我有一个继承类:
[DataContract]
public class Manager : Person
{
[DataMember]
public int level;
}接口如下:
[ServiceContract]
public interface Server
{
[OperationContract]
bool GetPerson(ref Person p);
}客户端这样调用:
Person p = new Person();
client.GetPerson(ref p);
现在问题来了!服务器端只有一个对象,是个Manager类型的Manager mgr = new Manager(); // 大体如此。
// 以下空行分开的是好几种情况。
public bool GetPerson(ref Person p)
{
p = mgr; // 出错
p = (Person)p; // 出错
Person np = new Person();
p = np; // 这样正常p.id = mgr.id;
p.name = mgr.name; // 这样也正常
}错误信息:
读取操作失败,请参见内部异常。
套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:00:59.5310000”。
我测试了几次,现在觉得问题是这样的:
接口需要一个Person对象,而我给了一个Manager对象,于是在数据序列化的时候有问题了。
难道我一定要去给传回的Person对象每个字段手工赋值?
实际应用中这是一个很大的工作量啊。还是去写一个Person Manager.GetPerson();这样的函数?
在应用中,问题是可以解决的(或者说绕过去)
但是我想问一下我的理解到底有没有错。
另外这个问题有没有比较优雅的解决办法?