vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 04.12.23 11:25

Ich bin gerade am Schreiben einer Abfrage.
Es geht dabei um den Accessor wie "Get" und "Set" einer Property.

If Beispielobject.IsProperty = True AND Beispielobject.Propertyname <> _
  PROPERTYNAME_NOT_IN_USE Then
 'Hier kommt noch Code rein
End If
Ich kenne diese bisher nur von Properties.
Werden Accessor wie "Get" und "Set" nur bei Properties verwendet oder gibt es noch andere Möglichkeiten,
welche ich nur noch nicht kenne?
Es handet sich hier um Code in .Net.
Ich weiß, dass diese Member unter VB6 LET usw. heißen, dies habe ich allerdings nicht gemeint.
Es geht mir ausschließlich darum, ob ich die Abfrage für den Accessor in die Abfrage
If Beispielobject.IsProperty... rein machen oder eine neue Abfrage darunter erstellen muss?

Beitrag wurde zuletzt am 04.12.23 um 11:26:46 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Manfred X
Datum: 04.12.23 12:49

Hallo!

Was genau meinst Du?

Dieses.... ?
Dim ty As Type = GetType(List(Of))
Dim mi() As System.Reflection.MemberInfo = ty.GetMembers()
For it As Integer = 0 To mi.Length - 1
    If mi(it).MemberType = System.Reflection.MemberTypes.Property Then
         ' 
    End If
Next it
Direkte Abfrage der Properties eines Typs:
Dim pi() As System.Reflection.PropertyInfo = ty.GetProperties()

Wofür verwendest Du Reflection?

Beitrag wurde zuletzt am 04.12.23 um 13:04:50 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 04.12.23 15:12

Manfred X schrieb:
Zitat:

Hallo!
Was genau meinst Du?


Ich möchte mir eine Structure oder Klasse basteln, mit welcher ich bestimmte Sachen protokollieren kann.
Ich weiß, dass es die Get und Set-Accessor bei Properties gibt.

Was ich nicht weiß ist, ob solche Accessor noch bei anderen Sachen vorkommen.
Das Problem ist, dass ich das .Net Framework nicht vollständig kenne.
Ich kenne nur die Sachen vom .Net Framework, welche ich schon mal benutzt habe.
Ein Interface zum Beispiel habe ich noch nie verwendet und kenne es daher auch nicht.
Da drängt sich natürlich der Verdacht auf, dass da ich das .Net Framework nicht vollständig kenne,
ich nicht mitbekommen würde, wenn noch weitere Klasse aus dem .Net Framework Accessor verwenden.

Beitrag wurde zuletzt am 04.12.23 um 15:15:10 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Manfred X
Datum: 04.12.23 15:51

Ich kann nur Dir raten, zu erklären, was GENAU Du machen willst.
Wie man das programmiert, kann man dann erklären.

Du scheinst System.Reflection verwenden zu wollen ???
Diese Technik benötigt man nur in Ausnahmefällen.
Das objektorientierte Progammieren bietet eine Fülle von
Möglichkeiten.

Insbesondere kann man eine Basis-Klasse mit den Grundfunktionen
für das Protokollieren erstellen und für erweiterte
Protokoll-Aufgaben Klassen davon ableiten (Inherits),
die zusätzliche Properties oder Methoden enthalten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 04.12.23 16:08

Danke für den Versuch, aber ich glaube es wird zu kompliziert.
Die Klasse welche ich programmieren will, ist in den Grundzügen bereits vorhanden.
Sie wird allerdings immer mal wieder erweitert.
Das mit der Reflection verwende ich.
Im Grund geht es darum dass, ich mir eine Protokollierung für Programmierfehler erstelle.

z.B.
Shared Friend Beispielfunktion(Of T1, T2, T3)(ByVal Wert1 As T1, ByVal Wert2 As _
  T2, ByRef Ergebnis As T3) As Boolean
 
'Irgendwelcher Code
 
  return True
ErrorExit:
  'Hier muss jetzt der ganze Kram herausgefunden werden, welcher übergeben 
  ' worden ist usw.,
  'damit ich die Sachen in eine Datei schreiben kann, um ohne zu debuggen 
  ' herauszufinden,
  'was falsch gelaufen ist.
  'Das Problem ist, dass Fehler welche bei mir nicht auftreten,
  'aber auf dem fremden PC auf welchem das Programm am Ende läuft,
  'irgendwie abgespeichert werden müssen, damit ich nicht nur blödsinnige 
  ' Aussagen bekomme,
  'welche mir beim Bugfixen des Fehlers nicht weiterhelfen.
  return False
End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Manfred X
Datum: 04.12.23 16:29

Wie wäre es, wenn Du einen Try..Catch-Block verwendest?

Du erhälst nach einer auffangbaren Ausnahme ein Objekt des Typs "Exception"
im Catch-Block.
Du kannst im Programm eigene Ausnahmen erstellen und lokal auslösen
(beliebiges Info-Objekt, abgeleitet von der System.Exception-Klasse)

Eine einfache globale Feherbehandlung (Zitat):
"Deaktiviere das Anwendungsframework, schreibe eine 'Public Shared Sub Main()'
in deine Form-Klasse und starte darin mit Application.Run(New DeineForm) dein Formular.
Wenn du das alles in einen Try...Catch-Block legst, hast du eine einfache
globale Fehlerbehandlung."
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Kuno60
Datum: 04.12.23 18:57

Hallo,

in NET gibt es ein Tracing-System. Damit kannst du die Programmausführung und Fehlerüberwachung zur Laufzeit in eine Datei schreiben lassen. In den Projekt-Eigenschaften kannst du auch eine Trace-Konstante ein- oder ausschalten.
Trace kannst du so ähnlich wie Throw verwenden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 04.12.23 21:06

Manfred X schrieb:
Zitat:

Wie wäre es, wenn Du einen Try..Catch-Block verwendest?


Der Try Catch-Block ist normalerweise dort, wo ich:
'Irgendwelcher Code
kommentiert habe.
Wenn eine Exception kommt, dann springt er in den ErrorExit.
Der ganze Error-Kram ist bei mir komplett in einer Klassenbibliothek drin.
Ich möchte den ganzen Kram einmal programmieren und dann bei jedem Programm,
welches ich erstelle verwenden.
Im Hauptprogramm möchte ich nur die Aufrufe haben, um neue Meldungen einzutragen,
zu löschen usw.

Beitrag wurde zuletzt am 04.12.23 um 21:07:09 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 04.12.23 21:13

Die Lösung muss auch funktionieren, wenn die Anwendung mit "Release" kompiliert wird.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Kuno60
Datum: 04.12.23 21:56

Ja, geht auch im Release Modus.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: sv00010
Datum: 05.12.23 11:22

Danke.
Ich werde mir das mit Trace anschauen, sobald ich wieder mehr Zeit habe.
Ich habe das Problem jetzt irgendwie abgewürgt.
Das Thema könnte eigentlich geschlossen werden.
Wenn natürlich noch jemand nützliche Hinweise oder Kommentare hat, dann immer her damit.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Accessor nur bei Property oder auch woanders vorhanden? 
Autor: Manfred X
Datum: 05.12.23 20:25

Hallo!

Falls Du bereits Ausnahmen durch Try-Catch-Blöcke abfängst,
benötigst Du nur eine global verfügbare Funktion (Shared),
die in jedem Catch-Block aufgerufen wird und der als Parameter
das Exception-Objekt derAusnahme übergeben wird. Zusätzlich
eventuell eine Kennziffe, die den Catch-Block identifiziert

Diese Funktion liest alle Informationen aus der Exception aus
und hängt sie in einer Protokoll-Datei an - insbesondere den StackTrace.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel