在InvokeMember调用期间引发NotSupportedException

时间:2012-09-20 16:27:53

标签: c# .net-cf-3.5

我正在使用 .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。

这是正确的程序吗? 感谢。

1 个答案:

答案 0 :(得分:2)

来自Type.InvokeMember的文档,例外部分:

  
      
  • NotSupportedException异常
      .NET Compact Framework目前不支持此方法。
  •   

我觉得很清楚它不支持.NET CF,这就是你正在使用的。

我真的希望 RetrurnString无论如何都行不通,而你想要ReturnString

您可以更方便地获取方法(Type.GetMethod),然后在Invoke上调用MethodInfo。我没有看到同样的限制......