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