2009-07-09 10 views
0

Ich möchte verwalteten Code genau dann aufrufen, wenn die gerade ausgeführte Assembly darauf verweist und eine Übereinstimmung für diesen Funktionsnamen hat.Eine Funktion aufrufen, wenn ihre DLL verfügbar ist?

Ich habe eine Funktion

Public Function TestReadableProperties() As String 

    ' Not sure where to go with this line 
    ' Dim names = Reflection.Assembly.GetExecutingAssembly.GetReferencedAssemblies() 


    Return bLib.bReflection.GetAllReadableProperties(Me) 
End Function 

wenn die bLib.dll nicht vorhanden ist, dann will ich das Projekt nicht diese DLL beschweren oder zum Absturz bringen. Ich möchte keine Warnungen über widersprüchliche Versionen abhängiger Assemblys haben. Dieser Code ist zum Testen gut, aber ich möchte die Abhängigkeit von dieser Bibliothek entfernen, ohne die Funktionalität zu entfernen, wenn die Abhängigkeiten übereinstimmen.

Ist das möglich?

+0

Versuchen/fangen? VB.Net hat das, oder? – MusiGenesis

+0

lol ... ja offensichtlich VB.net hat das: P –

Antwort

0

Einfach setzen Sie Ihren Funktionsaufruf zwischen einem Versuch und Catch-Anweisung.

Public Function TestReadableProperties() As String 
    Try 
     Return bLib.bReflection.GetAllReadableProperties(Me) 
    Catch 
     ''// bLib is not available, let's return nothing 
     Return Nothing 
    End Try 
End Function 

Sorry für den funky Kommentar, es ist nur um den Textmarker zu täuschen, um es tatsächlich als Kommentar zu sehen.

+0

gibt es einen spezifischeren Fang, der verwendet werden sollte/könnte? – Maslow

+0

Klar, leider weiß ich nicht genau welche es ist. Versuchen Sie, e As Exception abzufangen, und führen Sie dann eine MessageBox.Show (ex.ToString, ex.GetType.ToString) aus, um genau den Typ zu ermitteln, den Sie abfangen möchten. –

Verwandte Themen