WCF DataContract GetCustomDataToExport - PullRequest
       8

WCF DataContract GetCustomDataToExport

1 голос
/ 14 января 2011

Я пытаюсь получить поведение по умолчанию для клиента, ссылающегося на мой WSFL WCF, чтобы установить для IsReference значение true в импортированных DataContracts. Похоже, я должен быть в состоянии использовать IDataContractSurrogate с GetCustomDataToExport для достижения этой цели ... что означает, в частности, добавление следующего к генерируемому ComplexType в xsd, связанном с WSDL:

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

Разумеется, от MS нет полезной документации о том, как использовать этот метод. На странице MSDN написано, что он должен возвращать объект ... но вообще не указывается, к какому типу объектов это должно быть .... как бесполезно ...

Прежде, чем я расскажу об этом, кто-нибудь знает, как использовать этот метод?

Спасибо.

1 Ответ

4 голосов
/ 16 января 2011

Завершается только использованием IWsdlExportExtension следующим образом:

   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 никогда даже не вызывается при создании WSDL.Отличная работа, еще раз, MS.

...