2012-09-20 3 views
0

J'utilise un .NET CF 3.5 pour créer une DLL et appeler un membre public de la DLL à partir de l'exe. Le code dll est donnée ci-dessous:NotSupportedException déclenché lors de l'appel InvokeMember

using System; 
using System.Linq; 
using System.Collections.Generic; 
using System.Text; 

namespace DllPoc 
{ 
    public class DllCheck 
    { 
     public String ReturnString() 
     { 
      return "Hello DLL"; 
     } 
    } 
} 

et le code exe est:

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(); 
    } 
} 

Lors de l'exécution de la ligne:

String s = (String)type.InvokeMember("RetrurnString", 
          BindingFlags.InvokeMethod | BindingFlags.Instance | 
          BindingFlags.Public, null, obj, null); 

NotSupportedException est levée.

Est-ce la bonne procédure? Merci.

Répondre

2

De la documentation pour Type.InvokeMember, la section Exceptions:

  • NotSupportedException
    Le .NET Compact Framework ne prend pas en charge cette méthode.

semble assez clair pour moi que ce n'est pas pris en charge sur .NET CF, qui est ce que vous utilisez.

Je vraiment espère queRetrurnString ne fonctionnerait pas de toute façon, et que vous voudriez ReturnString.

Vous pouvez avoir plus de chance d'aller chercher la méthode (Type.GetMethod) puis d'appeler Invoke sur le MethodInfo. Je ne vois pas la même restriction là ...

+0

Il semble que la surcharge qui ne prend pas un 'CultureInfo' [est pris en charge dans CF 3.5] (http://msdn.microsoft.com/fr-fr /library/66btctbe(v=vs.90).aspx) –

+0

@JeffMercado: Nous regardons la même surcharge, juste différentes versions de la documentation. –

+0

@Jon Skeet. Je vous remercie. Ça a marché. – Phoenix

Questions connexes