vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Reflektion Vereinfachen 
Autor: hopeless1
Datum: 22.03.10 12:53

Guten Tag,

ich habe folgendes Anliegen:

Ich habe mir vor einiger Zeit das Buch für CatiaV5 von Jens Hansen gekauft in dem auch die Einbundung von Catia in Vb.Net per LateBindung(reflection) gezeigt wird.

Nun läuft das sehr viel stabilder und schneller als der umweg über die Bibliotheken, jedoch fidne ich die schreibweise sehr umständlich. Ich habe mir bereits weitere Hilfsfunktionen geschrieben um mehrer Befehle hintereinander abzuarbeiten.

Zur erläuterung:

part = ch.GetProperty(new String() {"ActiveDocument","Part"})
zugrundeliegender (Teil-)Code wäre folgender:

Imports System.Reflection
imports System.Runtime.InteropServices
 
Public Class CatiaHandler
	Private _catia As Object
	Private _invokeAttr As BindingFlags
 
	Public Sub New()
		_catia = GetInstance()
	End Sub
'	Überladungen von GetProperty
	Public Function GetInstance() as Object
		return Marshal.GetActiveObject("CATIA.Application")
	End Function
	Public Function GetProperty(ob As Object, Befehl As String, args As Object()) _
  as Object
		_invokeattr = bindingflags.GetProperty
		return InvokeMember(Befehl, _invokeAttr, ob, args)
	End Function
	Public Function GetProperty(ob As Object, Befehl As String) As Object
		return GetProperty(ob, Befehl, nothing)
	End Function
	Public Function GetProperty(ob As Object, Befehl As String()) As Object
		Dim o as Object = GetProperty(ob, Befehl(0))
		If Befehl.GetUpperBound(0) = 0 Then
			Return o'GetProperty(ob, Befehl(0))
		Else
			Dim s1 As String() = new String(befehl.GetUpperBound(0) -1) {}
			array.Copy(Befehl,1,s1,0,befehl.GetUpperBound(0))
			Return GetProperty(o, s1)
		End If
	End Function
	Public Function GetProperty(Befehl As String) As Object
		return GetProperty(_catia, Befehl)
	End Function
	Public Function GetProperty(Befehl As String()) As Object
		return GetProperty(_catia, Befehl)
	End Function
	Private Function InvokeMember(name As String, invokeAttr As BindingFlags, _
  target As Object, args As Object()) As Object
		return target.[GetType]().InvokeMember(name, invokeAttr, Nothing, target, _
args)
	End Function
End Class
Anstatt jeweils einzeln auf ActiveDocument und von daus auf Part zuzugreifen.


Nun meine eigentliche Frage.

Ist es möglich dies "normal" schreiben zu können. Also Part = CH.ActiveDocument.Part und man das so dreht das er inten oben gelistetes ausführt.

Functionen würden daran erkannt werden, das abschließende () da wären.

Die Bibliotheken hätten nur den vorteil der automatischen Codevervollständigung, die ich jedoch nicht benötigen würde. Nur die vereinfachte schreibweise wäre schön, OHNE das komplette Klassenmodell nachzubauen!

Vll ist hier ja ein sehr guter VB.net Programmierer, der jetzt mit Attributen oder so um die ecke kommt.

Leider hat mich das Internet und mein Buch bislang im dunklen gelassen , welche möglichkeiten da vorhanden sind (Reflektion allgemein wird nur sehr wenig behandelt finde ich...)!


Vielen Dank im Voraus.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Reflektion Vereinfachen1.745hopeless122.03.10 12:53
Re: Reflektion Vereinfachen1.261ModeratorDaveS22.03.10 13:09
Re: Reflektion Vereinfachen1.276ModeratorDaveS22.03.10 13:10
Re: Reflektion Vereinfachen1.261hopeless122.03.10 13:27
Re: Reflektion Vereinfachen1.286ModeratorDaveS22.03.10 14:00
Re: Reflektion Vereinfachen1.215hopeless123.03.10 15:16
Re: Reflektion Vereinfachen1.249ModeratorDaveS23.03.10 15:23

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