C# 如何从dll导入类?
mydll.dllC# 如何从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)]公共静态外部 我该怎么做呢?
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,您可以在运行时使用反射和方法加载程序集。加载程序集后,您可以列出其中的所有类型并对其调用方法。