2009-05-01 2 views
0

Ich habe eine einfache Basisklasse B mit 2 öffentlichen Eigenschaften. Diese Klasse wird von einer anderen Klasse D geerbt, die eine weitere öffentliche Eigenschaft hinzufügt. Die abgeleitete Klasse wird von einem Web-Service-Aufruf zurückgegeben. Die Seite wird von ASP.Net erzeugt wie folgt aussieht:Wie Sie den Asp.Net/WSE asmx Page-Generator hinzufügen die Basisklasse Eigenschaften in einer abgeleiteten Klasse

'''<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 

Gibt es eine Möglichkeit, alle öffentlichen Eigenschaften zu zeigen (von Klasse B und Klasse D in der Klasse D)? Nur Klasse D ist für die Web-Service-Clients nützlich, Klasse B sollte nicht einmal sichtbar sein. Vielen Dank

Antwort

0

Haben Sie versucht, das XmlTypeAttribute in Klasse B mit IncludeInSchema = False? Ich weiß nicht, ob das funktionieren würde, aber es ist eine Möglichkeit.

XmlTypeAttribute on MSDN for .NET 2.0

0

Sie können die XmlSchemaProviderAttribute auf Ihrem Typ verwenden und ein Verfahren implementieren, die das XSD-Schema ohne die Basisklasse Trennung zurückgibt. Es ist ein wenig Arbeit, aber Sie können mit der vorhandenen Standardausgabe beginnen und ein wenig kopieren und einfügen, bevor Sie in die Methodenimplementierung fallen.