Как избежать генерации указателя на структуры, используя wsutil?
Я определил следующее struct
в моем сервисе WCF:
[Serializable]
[DataContract]
public struct CompositeKey :
IComparable, IComparable<CompositeKey>, IEquatable<CompositeKey>
{
[DataMember]
public long Primary { get; private set; }
[DataMember]
public byte Secondary { get; private set; }
//others
}
который используется в качестве члена какого-либо другого контракта на данные:
[DataContract]
public class PatternFrequencyArgs
{
[DataMember(IsRequired=true, EmitDefaultValue=false)]
public CompositeKey PatternKey { get; set; }
[DataMember(IsRequired = true)]
public CompositeKey SessionStatKey { get; set; }
[DataMember]
public int Frequency { get; set; }
}
На стороне клиента wsutil.exe
генерирует эту структуру:
typedef struct PatternFrequencyArgs
{
int Frequency;
struct CompositeKey* PatternKey; //why pointer?
struct CompositeKey* SessionStatKey; //why pointer?
} PatternFrequencyArgs;
Как видите, CompositeKey
члены генерируются как указатели. Я не хочу, чтобы они были указателями. Как избежать этого и генерировать их как элементы без указателей?
Соответствующий XSD, из которого сгенерирована вышеупомянутая структура, таков:
<xs:complexType name="PatternFrequencyArgs">
<xs:sequence>
<xs:element minOccurs="0" name="Frequency" type="xs:int" />
<xs:element xmlns:q6="http://schemas.etc..." name="PatternKey" type="q6:CompositeKey">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.etc..." />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element xmlns:q7="http://schemas.etc..." name="SessionStatKey" type="q7:CompositeKey" />
</xs:sequence>
</xs:complexType>