0

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

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

4

1 回答 1

2

从文档中Type.InvokeMember,例外部分:

  • NotSupportedException
    .NET Compact Framework 当前不支持此方法。

对我来说似乎很清楚,.NET CF 不支持它,这就是你正在使用的。

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

获取方法 ( )Type.GetMethod然后调用Invoke. MethodInfo我在那里没有看到相同的限制...

于 2012-09-20T16:30:31.967 回答