vb.net:如何调用函数,只有它存在

时间:2016-11-30 13:48:36

标签: vb.net

我有vb.net代码,它应该在具有不同安装的操作系统的设备上运行。使用API​​完全相同,除了一些OS中没有实现的功能。如何使代码具有通用性,而不需要在不存在的情况下禁用某些函数?

2 个答案:

答案 0 :(得分:0)

抓一下我之前说过的话,我觉得VB.NET中不存在#define和#if,但他们这样做了:

#CONST SOMEOS = TRUE

Dim item As SomeClass
#IF SOMEOS
item.someFunction()
#ELSE
item.otherFunction()
#ENDIF

这样,如果定义SOMEOS,则只会调用和编译someFunction。如果您定义OTHEROS,则只会调用和编译otherFunction

答案 1 :(得分:0)

确定。刚刚得到了工作代码。我们将使用System.Reflection: 这样,只在RunTime上检查外部函数的存在,我们可以编译代码!

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