【发布时间】:2012-04-08 11:00:12
【问题描述】:
我创建了一个 WCF 服务,并在主 DataContract 上添加了另一个操作合同到默认服务:
[OperationContract]
void DoSomething(UserData data);
然后我在下面有这样的东西(为了示例的目的而简化了)。问题是,即使层次结构中的所有类都用 DataContract 装饰,并且它们的所有成员都用 DataMember 装饰,但当我使用 WCF 测试客户端时,它有一个红色图标,表示“WCF 测试客户端不支持该操作”。
[DataContract]
public class UserData {
[DataMember]
public uint One { get; set; }
[DataMember]
public CompositeType Extra { get; set; }
public UserData() { ctor. code }
}
[DataContract]
public class CompositeType {
[DataMember]
public uint Two { get; set; }
public UserData() { ctor code }
}
【问题讨论】:
-
我看到两个类同名但一个缺少复合类型,这是什么意思?您还忘记发布复合类型的类。
-
我看到你在谈论层次结构。您是否正在实施任何类型的递归关系?因为这需要递归使用的类用
[DataContract(IsReference=True)]装饰 -
@Silvermind 抱歉拼写错误,第二个(已更正)是 CompositeType 而不是 UserData。我还在主 DataContract 中使用的子类型中添加了 IsReference 参数,但这并没有解决问题。