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は現在、このメソッドをサポートしていません。

使用している.NETCFではサポートされていないことは明らかです。

とにかくそれがうまくいかないこと、そしてあなたが望むことを本当に願っています。RetrurnStringReturnString

メソッド()をフェッチしてType.GetMethodからを呼び出すほうが運が良いかもしれません。そこには同じ制限はありません...InvokeMethodInfo

于 2012-09-20T16:30:31.967 に答える