Public Variable unsichtbar machen?

07/10/2009 - 18:00 von Thomas Hübner | Report spam
Hi NG,

blöder Betreff ich weis ;-)
Ich habe das Problem, das ich für den XML Serializer Variablen Public
deklarieren muß. Nun würde ich gerne in der Klasse gleich eine
Typumwandlung z.B. String-> Integer machen und über eine Readonly
Property verfürgbar machen. Die Original Variable soll nach außen
nicht verfügbar sein. Wenn ich Sie Private deklariere wird Sie beim
deserialisieren nicht gefüllt. Lasse ich Sie Public sieht man sowohl
die Originalvriable und die typgerechte Property. Im XML Tag den Typ
angeben wirft bei leerem XML Tag und Versuch auf Integer zu wandeln
eine Exception
Istzustand:
<XmlElement("favourites_count", GetType(String))> _
Public FavoritesCount As String

Am liebsten wàre mir

<XmlElement("favourites_count", GetType(Integer))> _
Public FavoritesCount As Integer

wirft aber Fehler bei leerem Tag

<XmlElement("favourites_count", GetType(String))> _
Private FavoritesCount As String

wird vom Serialisierer ignoriert

Gibt es ein Attribut mit dem ich eine Public Variable "ausblenden"
kann? Oder kann ich den Serialisierer überlisten einen leeren Tag mit
Nothing statt mit Ausnahme zu quittieren?

Gruß,
Thomas
 

Lesen sie die antworten

#1 Thorsten Doerfler
07/10/2009 - 18:19 | Warnen spam
Thomas Hübner schrieb:
Gibt es ein Attribut mit dem ich eine Public Variable "ausblenden"
kann?



Du suchst:
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>


Durch einen Import von System.ComponentModel könntest Du das natürlich
noch abkürzen.

Hindert natürlich keinen daran, dieses ausgeblendete Feld dennoch
aufzurufen, auch wenn es nicht im IntelliSense angeboten wird.

Möglichkeit Nr. 2 wàre die Nutzung eines Interface. Deine
ReadAtom-Methode würde dann nur das Interface mit den passenden Membern
zurückliefern, Implementierungsdetails, die Du zum Deserialisieren
benötigst, blieben dem Konsumenten komplett verborgen, aber da
öffentlich, weiterhin ebenso zugànglich.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen