I created a WCF service and to the default service I added another operation contract on the main DataContract:
[OperationContract]
void DoSomething(UserData data);
Then I have something like this (simplified for the purpose of example) below. The problem is that even though ALL classes in the hierarchy are decorated with DataContract and ALL their members decorated with DataMember, when I use the WCF Test Client it has a red icon indicating that "the operation is not supported in the WCF test client".
[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 }
}
Best Answer
OK, having gone through the whole thing (thanks to all for the tips) the solution was this:
IsReference
attribute inDataContract
was not needed at allIsOneWay
attribute inDataContract
was not needed at all even whenOperationContract
was returning void.KnownType
was also not needed provided all the subtypes in the hierarchy were mine, in other words defined by me rather than .NET and marked withDataContract
orDataMember
as appropriateOperatingSystem
and building a wrapperDataContract
that extracted the necesary information fromOperatingSystem
got around the issue.Now there is no error in the WCF Test Client