C# 如何从dll导入类?

C# 如何从dll导入类?,c#,dll,dllimport,C#,Dll,Dllimport,mydll.dll namespace mydll { public class MyClass { public static int Add(int x, int y) { return x +y; } } } 在另一个项目中,如何导入MyClass或仅添加函数 我想添加DllImport [DllImport(“mydll.dll”,字符集= CharSet.Auto)]公共静态外部 我该怎么做呢?

mydll.dll

namespace mydll
{
    public class MyClass {
        public static int Add(int x, int y)
        {
            return x +y;
        }
    }
}
在另一个项目中,如何导入MyClass或仅添加函数

我想添加DllImport

[DllImport(“mydll.dll”,字符集= CharSet.Auto)]公共静态外部


我该怎么做呢?

DllImport
用于调用非托管代码。您显示的
MyClass
类是托管代码,为了在另一个程序集中调用它,您只需包含它并调用该方法。例如:

using System;
using mydll;

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

如果双方都是.NET,您仍然需要一些公共接口(或使用动态接口)。如果您已经准备好了,您可以使用反射或ComponentModel。

您可以使用反射在运行时加载程序集

下面是一段您可以使用的代码:

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

object o;
Type myType =  myAssembly.GetType("<assembly>.<class>");
o = Activator.CreateInstance(myType);
Assembly-myAssembly;
myAssembly=Assembly.LoadFile(“myDll.dll”);
对象o;

键入myType=myAssembly.GetType(“您可以找到一个很好的教程。

您在应用程序的两侧(类定义和类使用者)都使用C吗?”?如果是,程序运行时可能没有我想要添加dll的选项,而不是使用添加引用选项,那么如何创建非托管dll?@ocanal,您可以在运行时使用反射和方法加载程序集。加载程序集后,您可以列出其中的所有类型并对其调用方法。