3 votes

Comment importer une classe à partir d'une dll ?

mydll.dll

namespace mydll
{
    public class MyClass {
        public static int Add(int x, int y)
        {
            return x +y;
        }
    }
}

Dans un autre projet, comment puis-je importer MyClass ou simplement Add function ?

Je souhaite ajouter avec DllImport ,

[DllImport("mydll.dll", CharSet = CharSet.Auto) ] public static extern .......

comment faire ?

6voto

Darin Dimitrov Points 528142

DllImport est utilisé pour appeler du code non géré. Les MyClass La classe que vous avez montrée est un code géré et pour l'appeler dans une autre assemblée, il suffit de ajouter une référence à l'assemblage qui la contient et invoque la méthode. Par exemple :

using System;
using mydll;

class Program
{
    static void Main()
    {
        int result = MyClass.Add(1, 3);
        Console.WriteLine(result);
    }
}

3voto

2GDev Points 1975

Vous pouvez utiliser Reflection pour charger l'assemblage au moment de l'exécution.

Voici un morceau de code que vous pouvez utiliser :

Assembly myAssembly ;
myAssembly = Assembly.LoadFile("myDll.dll");

object o;
Type myType =  myAssembly.GetType("<assembly>.<class>");
o = Activator.CreateInstance(myType);

Ici vous pouvez trouver un bon tutoriel.

0voto

Jsfsn Points 90

Si les deux parties sont en .NET, vous avez toujours besoin d'une interface commune (ou d'utiliser une interface dynamique). Si vous disposez de cette interface, vous pouvez utiliser Reflection ou ComponentModel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X