| 

.NET C# Java Javascript Exception

1
Hallo zusammen,

ich möchte mit Hilfe von VB.NET einen Webservice eines SAP-Systems aufrufen.
Der Service enthält innerhalb der Request- und Response-Datenstruktur eine Tabelle BAPIRET2, welche ein Datenelement SYSTEM erhält.

Innerhalb der generierten Proxy-Klasse Reference.vb wird nun folgerichtig eine Partial Class Class BAPIRET2 und eine Property SYSTEM angelegt, um auf das Datenelement zugreifen zu können:

'''<remarks/>

System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property SYSTEM() As String
Get
Return Me.sYSTEMField
End Get
Set(ByVal value As String)
Me.sYSTEMField = value
End Set
End Property


Leider resultiert daraus die folgende Fehlermeldung des Compilers:
"Reference to a non-shared member requires an object reference."

Dies passiert, da es nun für das reservierte Wort System eine Property gibt und der Compiler (da VB nicht case sensitive) diese "benutzt" , so auch im Attribut
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _


Mein erster Lösungsansatz, die Property in SYSTEM2 umzubenennen, hat zwar bewirkt, dass man das Ganze compilieren und ausführen kann, das Datenelement jedoch nicht mehr befüllt wird!

long story short:
Wie kann man Webservices in VB.NET nutzen, welche in ihren Datenstrukturen reservierte Wörte wie z.B. SYSTEM benutzen?
News:
24.09.2009
EndOfInfinity 21 1 2
2 Antworten
2
System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property [SYSTEM]() As String
Get
Return Me.sYSTEMField
End Get
Set(ByVal value As String)
Me.sYSTEMField = value
End Set
End Property


hast du es schonmal so versucht? mit [ und ] um den reservierten Namen?
24.09.2009
Floyd 14,6k 3 9
Ergänzung: Bei C# würde das mit dem @ vor dem Bezeichner gehen.
gfoidl 24.09.2009
Hallo und danke für die Antwort,


leider würde das nur bei den "richtigen" (also blauen) reservierten Wörtern was bewirken! Also wenn ich z.B. eine Property/Function [i]ReadOnly[/i] haben möchte.
EndOfInfinity 24.09.2009
0
Ich denke, ich habe die Lösung gefunden:

Ich habe unter Project Properties --> References den Namespace System.Xml explizit importiert und danach das Attribut wie folgt geändert:

<Serialization.XmlElementAttribute(Form:=Schema.XmlSchemaForm.Unqualified)> _


Nun "sucht" er Serialization in den importierten Namespaces, findet es dort und kommt nicht mehr auf die Idee, dass das irgendwas mit der Property SYSTEM zu tun hat!

Muss es allerdings noch testen...
24.09.2009
EndOfInfinity 21 1 2

Stelle deine .net-Frage jetzt!