按字符串名称调用 System.IO.ReadAllBytes



这篇文章与Visual Basic .NET 2010相关

所以,我想知道是否有任何方法可以从库中调用函数,例如按字符串名称System.ReadAllBytes

我一直在尝试Assembly.GetExecutingAssembly().CreateInstanceSystem.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())

(一如既往)非常感谢帮助

System.IO.File.ReadAllBytes() ,您错过了"文件"部分。 这是一个共享方法,CallByName 语句不够灵活,无法允许调用此类方法。 你将需要使用 .NET 中提供的更通用的反射。 对于您的特定示例,如下所示,为清楚起见,已详细说明:

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:temptest.bin"})
        Dim bytes = DirectCast(result, Byte())
    End Sub
End Module

相关内容

  • 没有找到相关文章

最新更新