Ich habe vb.net Code, der auf dem Gerät mit verschiedenen installierten Betriebssystemen funktionieren sollte. Die verwendenden APIs sind ziemlich identisch, mit Ausnahme einiger Funktionen, die nicht in einem der Betriebssysteme realisiert sind. Wie kann ich den Code universell machen, ohne einige Funktionen deaktivieren zu müssen, falls sie nicht vorhanden sind?vb.net: So rufen Sie eine Funktion, nur wenn es vorhanden ist
Antwort
Ok. Habe gerade den Arbeitscode bekommen. Wir verwenden die System.Reflection: Auf diese Weise wird das Vorhandensein der externen Funktion nur auf RunTime geprüft und wir können unseren Code kompilieren!
Sub DynamicLibraryUse(ByVal val As Byte) 'just because my External Function receives byte values
Dim myAssembly As System.Reflection.Assembly
myAssembly = Assembly.Load("MyExternalLibrary")
Dim o As Object = myAssembly.CreateInstance("MyExternalNamespace.Class")
Dim myType As Type = myAssembly.GetType("MyExternalNamespace.Class")
Dim myMethod As MethodInfo = myType.GetMethod("MyExternalMethod")
Dim val2 As Object() = New Object(0) {}
val2(0) = val
myMethod.Invoke(o, val2)
End Sub
Scratch, was ich gesagt, ich dachte # define und # if nicht in VB.NET nicht existierte, aber sie tun so:
#CONST SOMEOS = TRUE
Dim item As SomeClass
#IF SOMEOS
item.someFunction()
#ELSE
item.otherFunction()
#ENDIF
diese Weise, wenn Sie SOMEOS
definieren, nur someFunction
wird aufgerufen und kompiliert. Wenn Sie stattdessen OTHEROS
definieren, wird nur otherFunction
aufgerufen und kompiliert.
Danke. Dies funktioniert jedoch nicht, da der Code nicht kompiliert wird, wenn in itemFunction() nicht vorhanden ist. –
Stimmt, ich hatte das #CONST vergessen. Jetzt funktioniert es, nur getestet :) – DrDonut
Nochmals vielen Dank. Ich werde Ihre Methode speichern und werde es morgen versuchen. Für jetzt habe ich die Lösung gefunden :) –
- 1. So rufen Sie eine WebAPI2 von VB.NET
- 2. So rufen Sie eine Funktion von $ rootScope
- 3. So zeigen Sie Nur wenn Telefonnummer mit Kontaktpicker vorhanden ist
- 4. So überladen Sie eine eingebaute vb.net-Funktion
- 5. So rufen Sie eine Funktion, PostgreSQL
- 6. So rufen Sie eine Funktion auf, wenn Feldwechsel deaktiviert
- 7. So rufen Sie eine PHP-Funktion, wenn wir die Seite
- 8. So rufen Sie eine Funktion mehrmals auf?
- 9. So rufen Sie eine externe Funktion auf?
- 10. So rufen Sie die Funktion
- 11. So rufen Sie eine Funktion in einer anderen Funktion auf
- 12. SQL Server So wählen Sie eine Spalte nur aus, wenn sie in der Tabelle vorhanden ist
- 13. So rufen Sie eine Funktion auf, wenn im benutzerdefinierten Inspektor eine Referenz zugewiesen ist
- 14. Abwickelwerkzeug ein Optional nur, wenn es vorhanden ist
- 15. So rufen Sie eine Funktion bei Änderung mit noUiSlider auf?
- 16. So rufen Sie eine JS-Funktion mit OnClick-Ereignis auf
- 17. Rufen Sie JavaScript-Funktion, wenn bestimmte Seite geöffnet ist
- 18. So rufen Sie Controller-Funktion von Javascript
- 19. So rufen Sie Python-Funktion von Node.JS
- 20. jQuery - Rufen Sie eine Funktion mit dem Mauszeiger auf, rufen Sie dann eine andere Funktion auf
- 21. So rufen Sie eine Ajax-Funktion in einer for-Schleife
- 22. So rufen Sie eine Funktion in einem HTML-Hyperlink auf
- 23. So rufen Sie eine Funktion bei jeder Auswahl in Spinner
- 24. So rufen Sie eine Funktion mit Stichargumenten auf
- 25. So rufen Sie eine Javascript-Funktion mit Schließung auf?
- 26. So rufen Sie eine schmucklose C++ - Funktion von C++/CLI
- 27. So rufen Sie eine Funktion vom Kontrollkästchen onclick oder onchange
- 28. So rufen Sie eine Funktion bei Tilt swift auf 3
- 29. So rufen Sie eine Funktion aus der kendoListView-Vorlage auf
- 30. So rufen Sie eine Controller-Funktion von Winkel-Anweisung
Wie nennt man diese Funktionen? Normalerweise kompiliert es nicht einmal, wenn die Funktionen nicht vorhanden sind, es sei denn, es wird ein dynamischer Code hinzugefügt. –
Diese Funktionen anzeigen –
Könnte ein Auftrag für Compiler-Direktiven sein, aber mit so wenigen Informationen; schwer zu sagen, sicher – Sehnsucht