【问题标题】:Getting DLLs in WinForms application在 WinForms 应用程序中获取 DLL
【发布时间】:2010-11-19 11:17:09
【问题描述】:

我必须创建一个从存储库加载所有 dll 的类并检查是否 它们继承自 IMFServicePlugin 接口并返回 有效的dll。 我已经用这个完成了......

using System;
using System.Collections.Generic;

using System.Diagnostics;
using System.Reflection;

using System.Windows.Forms.ComponentModel;
using MFDBAnalyser;

namespace MFDBAnalyserAssemblyValidator
 {
  public class MFDBAnalyserAssemblyValidator
  {
   static void Main(string[] args)
    {
        List<string> assemblyNames = new List<string>();
        Assembly[] oAssemblies = new Assembly[args.Length];

        for (int assemblyCount = 0; assemblyCount < args.Length; assemblyCount++)
        {
            oAssemblies[assemblyCount] = Assembly.LoadFile(args[assemblyCount]);

            try
            {
                foreach (Type oType in oAssemblies[assemblyCount].GetTypes())
                {
                    // Check whether class is inheriting from IMFServicePlugin.
                    if (oType.GetInterface("IMFDBAnalyserPlugin") == typeof(IMFDBAnalyserPlugin))
                    {
                        assemblyNames.Add(args[assemblyCount].Substring(args[assemblyCount].LastIndexOf("\\") + 1));
                    }
                }
            }
            catch (Exception ex) 
            {
                lblError.Text = "ERROR";
            }
        }

        // Passing data one application domain to another.
        AppDomain.CurrentDomain.SetData("AssemblyNames", assemblyNames.ToArray());
   }
  }
 }

但这是为了从存储库加载 dll,但我也想将这些 dll 存储在另一个 ORM 类中。

谁能帮帮我... 如果可能,请提供一些链接,以便我可以充分了解 dll 如何在 Windows/桌面应用程序中工作。

【问题讨论】:

  • “这是为了从存储库中加载 dll,但我也想将这些 dll 存储在另一个 ORM 类中”,您能否对此添加更多见解?

标签: c# winforms desktop-application


【解决方案1】:

首先,您应该使用Assembly.ReflectionOnlyLoad()。因为如果您使用 Assembly.LoadFile() 加载程序集,程序集将自动放入您的本地 AppDomain!

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多