这篇文章与Visual Basic .NET 2010
有关所以,我想知道是否有任何方法可以通过字符串名称从System.ReadAllBytes
等库中调用函数。
我一直在尝试Assembly.GetExecutingAssembly().CreateInstance
和System.Activator.CreateInstance
后跟CallByName()
,但似乎都没有。
我如何尝试的示例:
Dim Inst As Object = Activator.CreateInstance("System.IO", False, New Object() {})
Dim Obj As Byte() = DirectCast(CallByName(Inst, "ReadAllBytes", CallType.Method, new object() {"C:\file.exe"}), Byte())
帮助(一如既往)非常感谢
答案 0 :(得分:6)
这是System.IO.File.ReadAllBytes()
,你错过了“文件”部分。哪个是共享方法,CallByName语句不够灵活,不允许调用此类方法。您将需要使用.NET中提供的更通用的Reflection。对于您的具体示例,这看起来像这样,为清楚起见,
Imports System.Reflection
Module Module1
Sub Main()
Dim type = GetType(System.IO.File)
Dim method = type.GetMethod("ReadAllBytes")
Dim result = method.Invoke(Nothing, New Object() {"c:\temp\test.bin"})
Dim bytes = DirectCast(result, Byte())
End Sub
End Module