【问题标题】:how to import a class from dll?如何从dll导入一个类?
【发布时间】:2011-08-08 11:40:51
【问题描述】:

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)] 公共静态外部 .......

我该怎么做?

【问题讨论】:

  • 您是否在应用程序的两端(类定义和类消费者)都使用 C#?如果是,可能有a better way

标签: c# dll dllimport


【解决方案1】:

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

using System;
using mydll;

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

【讨论】:

  • 不,我想在程序运行时添加 dll,而不是添加引用选项,那么如何创建非托管 dll?
  • @ocanal,您可以在运行时使用反射和Assembly.LoadFrom 方法加载程序集。加载程序集后,您可以列出其中的所有类型并调用它们的方法。
【解决方案2】:

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

这里有一段代码你可以使用:

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

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

Here你可以找到一个很好的教程。

【讨论】:

    【解决方案3】:

    如果双方都是.NET,你还是需要一些通用的接口(或者使用动态的)。如果你有这个,你可以使用 Reflection 或 ComponentModel。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      相关资源
      最近更新 更多