【发布时间】:2013-08-17 08:33:35
【问题描述】:
我的 WCF 服务中有此数据协定
[DataContract]
public class Department
{
[DataMember]
public List<Section> Sections { get; set; }
}
[DataContract]
public class Section
{
[DataMember]
public List<Room> Rooms { get; set; }
}
[DataContract]
public class Room
{
[DataMember]
public uint RoomId { get; set; }
}
当我在客户端应用程序中引用我的服务时,我只看到 Room 类,任何人都可以解释为什么 Department 和 Section 类的合同在客户端不可用。
【问题讨论】:
-
您是否重新加载了您的服务?我几乎可以肯定您已经引用了没有
Section和Department类的旧版本的服务。您需要发布最新版本的服务,然后在其他项目中重新加载参考。 -
是的,我已经尝试使用更新的服务参考,但我仍然只获得 Room 类。我看到的唯一区别是 Room 类具有本机类型,但其他类具有用户定义的类型。
-
msdn.microsoft.com/en-us/library/ms730167.aspx 从这里尝试 KnownTypes
-
我在 Department 和 Section Class 的 Datacontract 属性下方使用了 KnownType 标签,但客户端仍然没有出现任何内容。我尝试在我的服务接口中使用虚拟操作合同,它返回这些用户定义的类型,然后我可以在客户端查看这些类型的定义。是否需要为用户定义的类提供操作合同才能在客户端查看它们?
-
@TRS - 这是个好问题;可能是,因为未使用的数据合同可能不被视为元数据的一部分。我建议添加一些使用其他数据协定的操作,看看会发生什么。
标签: c# windows wcf service datacontract