2011-01-14 13 views
1

インポートされたDataContractsでIsReferenceをtrueに設定するために、WCF WSDLを参照するクライアントのデフォルトの動作を取得しようとしています。無WCF DataContract GetCustomDataToExport

<xs:attribute ref="ser:Id" /> 
    <xs:attribute ref="ser:Ref" /> 

はもちろん、あります:それは私がspecifcally WSDLに関連付けられているXSDの生成のComplexTypeに次を追加することを意味する...これを達成するためにGetCustomDataToExportとIDataContractSurrogateを使用することができるはずのように見えます私はMSからこのメソッドの使い方について知ることができます。 MSDNのページには、オブジェクトを返す必要があると書かれていますが、どのようなオブジェクトでなければならないのかはまったく示されていません...

私はこれをリフレクションする前に、このメソッドを使用する方法を知っていますか?

ありがとうございました。次のようにちょうどIWsdlExportExtensionを使用して終了

答えて

4

:WSDLが生成されるときに

public void ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) 
    { 
     foreach (var complexType in exporter.GeneratedXmlSchemas.Schemas().OfType<XmlSchema>().SelectMany(s => s.SchemaTypes.Values.OfType<XmlSchemaComplexType>()).Where(t => t.QualifiedName.Namespace.StartsWith("http://schemas.datacontract.org/2004/07/"))) 
     { 
      complexType.Attributes.Add(new XmlSchemaAttribute { RefName = new XmlQualifiedName("Id", "http://schemas.microsoft.com/2003/10/Serialization/") }); 
      complexType.Attributes.Add(new XmlSchemaAttribute { RefName = new XmlQualifiedName("Ref", "http://schemas.microsoft.com/2003/10/Serialization/") }); 
     } 
    } 

がGetCustomDataToExportがでも呼び出されることはありません。素晴らしい仕事ですが、もう一度、MS。

関連する問題