我正在尝试运行.dll并创建它的实例,但我收到此错误:
错误1“System.Reflection.Assembly”类型的值无法转换为“字节的1维数组”。
我的代码:
{
"error": {
"message": "(#803) Cannot query users by their username ({Username})",
"type": "OAuthException",
"code": 803
}
}
有谁知道我做错了什么? .dll中的主要子包括“MsgBox(”成功“)”,所以如果它正常工作,它肯定会显示一些东西。
如果我将dll跳到字节行并将Dim a跳到Assembly.Load(“data.dll”),它会给我一个错误,即无法打开它作为类似整数的类型。
提前致谢!
编辑:
好吧,我的第一个问题得到了解答。我新的非常相似:
Public NotInheritable Class method
Private Sub method_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim dll() As Byte = Assembly.Load("data.dll")
Dim a = Assembly.Load(dll)
Dim b As Type = a.GetType("data.Class1")
Dim c As Object = Activator.CreateInstance(b)
b.InvokeMember("main", BindingFlags.Default Or BindingFlags.InvokeMethod, Nothing, c, Nothing)
Catch ex As Exception
MsgBox("Caught: {0}", ex.Message)
End Try
End Sub
End Class
链接指向我的data.dll。 原因还是一样,为什么它不起作用? 我怎么能解决它?
答案 0 :(得分:1)
你写道:
Dim dll() As Byte = Assembly.Load("data.dll")
但Assembly.Load
不返回Byte数组,而是返回Assembly
类的实例(这正是错误消息告诉您的内容)。
另请注意,当您使用Assembly.Load(assemblyString As String)
时,该方法需要(长格式)程序集名称,而不是文件名;
"SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"
如果要按路径加载程序集,可以使用Assembly.LoadFrom(assemblyFile As String)
。
要加载类型Class1
,您必须指定类型的全名(名称空间+类名):
Dim b As Type = a.GetType("Class1.Class1")
命名空间为Class1
,类名也为Class1
,因此您必须使用Class1.Class1
。