как импортировать класс из dll? - PullRequest
3 голосов
/ 19 апреля 2011

MyDll.dll

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

В другом проекте, как я могу импортировать MyClass или просто добавить функцию?

Я хочу добавить с DllImport ,

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

как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 19 апреля 2011

DllImport используется для вызова неуправляемого кода.Класс MyClass, который вы показали, является управляемым кодом, и для вызова его в другой сборке вы просто добавляете ссылку на содержащую его сборку и вызываете метод.Например:

using System;
using mydll;

class Program
{
    static void Main()
    {
        int result = MyClass.Add(1, 3);
        Console.WriteLine(result);
    }
}
3 голосов
/ 19 апреля 2011

Вы можете использовать Reflection для загрузки сборки во время выполнения.

Вот фрагмент кода, который вы можете использовать:

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

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

Здесь вы можете найти хороший учебник.

0 голосов
/ 19 апреля 2011

Если обе стороны .NET, вам все еще нужен какой-то общий интерфейс (или использовать динамический). Если у вас это есть, вы можете использовать Reflection или ComponentModel.

...