C#从DLL中检索信息(事件)

时间:2016-10-05 12:57:02

标签: c# events dll

我是一名软件工程专业的学生,​​我们最近得到了一项任务,我们必须在C#中模拟酒店。作为模拟的扩展,教师提供了一个DLL,其中包含我们必须处理并应用于模拟的某些事件。

我们的问题是我们不知道如何从DLL中检索事件。我们试图在互联网上搜索它,但没有回答我们的情况。

DLL用作参考,我们可以调用DLL的某些部分,因此我们知道连接是正确的,但我们缺乏如何检索信息的知识。

是否有人建议某些网站了解该主题或解决问题?

另外,非常高兴stackoverflow存在,它帮助我解决了其他人已经遇到的很多问题。这是我的第一篇文章。

1 个答案:

答案 0 :(得分:0)

您有两种执行方式,一种用于基于.NET的DLL,另一种用于非基于.NET的DLL。

非.NET:

public static class DllHelper
{
   [System.Runtime.InteropServices.DllImport("Dll1.dll")]
   public static extern int func1();
}

private void btnExec_Click(object sender, EventArgs e)
{
   try
   {
       DllHelper.func1();
   }
   catch (Exception ex)
   {
      Console.WriteLine(ex.Message);
   }
}

基于.NET:

try
{
    System.Reflection.Assembly dll1 =  System.Reflection.Assembly.LoadFile("Dll1.dll");
    if (dll1 != null)
    {
        object obj = dll1.CreateInstance("Func1Cls");
        if (obj != null)
        {
            System.Reflection.MethodInfo mi = obj.GetType().GetMethod("func1");
            mi.Invoke(obj, new object[0]);
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

如果我有一些DLL文件,我也会尝试这个,我也知道方法