我正在使用 .NET CF 3.5 来创建一个dll,并从exe中调用DLL的公共成员。 Dll代码如下:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
namespace DllPoc
{
public class DllCheck
{
public String ReturnString()
{
return "Hello DLL";
}
}
}
,exe代码是:
public partial class Form1 : Form
{
String _AppPath;
String _AppImage;
String _AppName;
public Form1()
{
InitializeComponent();
//ReadAppLoaderXML();
//StartApp();
Assembly assembly = Assembly.LoadFrom("\\test\\DllPoc.dll");
Type type = assembly.GetType("DllPoc.DllCheck");
var obj = Activator.CreateInstance(type);
String s = (String)type.InvokeMember("RetrurnString",
BindingFlags.InvokeMethod | BindingFlags.Instance |
BindingFlags.Public, null, obj, null);
MessageBox.Show(s);
// Exit
Application.Exit();
}
}
执行该行:
String s = (String)type.InvokeMember("RetrurnString",
BindingFlags.InvokeMethod | BindingFlags.Instance |
BindingFlags.Public, null, obj, null);
抛出NotSupportedException。
这是正确的程序吗? 感谢。
答案 0 :(得分:2)
来自Type.InvokeMember
的文档,例外部分:
- NotSupportedException异常
.NET Compact Framework目前不支持此方法。
我觉得很清楚它不支持.NET CF,这就是你正在使用的。
我真的希望 RetrurnString
无论如何都行不通,而你想要ReturnString
。
您可以更方便地获取方法(Type.GetMethod
),然后在Invoke
上调用MethodInfo
。我没有看到同样的限制......