在与WCF合作时,我遇到了一个奇怪的问题。
让我们说,
我有一个学生班
public class Student
{
[DataMember]
public int32 ID { get; set; }
[DataMember]
public DateTime? CreatedDate { get; set; }
[DataMember]
public Gender Gender { get; set; }
[DataMember]
public string Name { get; set; }
}
[OperationContract]
Student GetStudentDetail (StudentRequest request);
[OperationContract]
Student GetStudent (StudentDetailRequest request);
我从Student
返回一个wcf
复杂类型的回复,方法名称为GetStudent()
,效果很好。但是在另一个场景中,我还有一个名为GetStudentDetail()
的网络方法,其中我希望从Student类返回更多数据库,如:
[DataMember]
public int32 Age{ get; set; }
[DataMember]
public string Location { get; set; }
如果我在类Datamember
中添加新的Student
,它会自动显示我不想要的GetStudent()
方法的模式响应..实际上我不想返回新的架构中的字段为GetStudent()
方法。问题出在这里:我想仅为Student
方法公开GetStudentDetail()
类的新数据库。
我怎样才能做到这一点?
答案 0 :(得分:0)
没有办法实现你想做的事。正如其他评论员所说,您返回的类型是两个服务操作相同。
您唯一能做的就是序列化您的学生类型并将其作为原始WCF Message类型嵌入,并将其作为服务操作中的返回类型公开。
然后,您可以手动处理反序列化到您选择的客户端类型,具体取决于调用的服务操作。
然而,这可能是一个荒谬的用例,正如您已经建议的那样,只需创建另一种服务类型并通过其他操作公开它。