Как заставить генератор страниц asmx Asp.Net/WSE добавить свойства базового класса в производный класс - PullRequest
0 голосов
/ 01 мая 2009

У меня есть простой базовый класс B с 2 открытыми свойствами. Этот класс наследуется другим классом D, который добавляет другое открытое свойство. Производный класс возвращается вызовом веб-службы. Страница, созданная ASP.Net выглядит следующим образом:

'''<remarks/>
    <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074"), _
     System.SerializableAttribute(), _
     System.Diagnostics.DebuggerStepThroughAttribute(), _
     System.ComponentModel.DesignerCategoryAttribute("code"), _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="")> _
    Partial Public Class D
        Inherits B

        Private guidField As String

        '''<remarks/>
        Public Property Guid() As String
            Get
                Return Me.guidField
            End Get
            Set(ByVal value As String)
                Me.guidField = value
            End Set
        End Property
    End Class

   '''<remarks/>
    <System.Xml.Serialization.XmlIncludeAttribute(GetType(D)), _
     System.Xml.Serialization.XmlIncludeAttribute(GetType(B)), _
     System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3074"), _
     System.SerializableAttribute(), _
     System.Diagnostics.DebuggerStepThroughAttribute(), _
     System.ComponentModel.DesignerCategoryAttribute("code"), _
     System.Xml.Serialization.XmlTypeAttribute([Namespace]:="")> _
    Partial Public MustInherit Class B

        Private nameField As String

        Private descriptionField As String

        '''<remarks/>
        Public Property Name() As String
            Get
                Return Me.nameField
            End Get
            Set(ByVal value As String)
                Me.nameField = value
            End Set
        End Property

        '''<remarks/>
        Public Property Description() As String
            Get
                Return Me.descriptionField
            End Get
            Set(ByVal value As String)
                Me.descriptionField = value
            End Set
        End Property
    End Class

Есть ли способ показать все общедоступные свойства (из класса B и класса D в классе D)? Только класс D полезен для клиентов веб-службы, класс B не должен быть даже видимым. Спасибо

Ответы [ 2 ]

0 голосов
/ 01 мая 2009

Вы можете использовать XmlSchemaProviderAttribute для вашего типа и реализовать метод, который возвращает схему xsd без разделения на базовый класс. Это немного работы, но вы можете начать с существующего вывода по умолчанию и сделать небольшую работу по копированию и вставке, прежде чем переходить к реализации метода.

0 голосов
/ 01 мая 2009

Вы пробовали XmlTypeAttribute в классе B с IncludeInSchema = False? Я не знаю, сработает ли это, но это возможно.

Атрибут XmlType в MSDN для .NET 2.0

...