2010-11-19 2 views
0

Мне нужно создать класс, который будет загружать все dll из репозитория и проверять, являются ли они , они наследуются от интерфейса IMFServicePlugin и возвращают действительные DLL . , что я сделал с помощью этого ...Получение DLL в приложении WinForms

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 в другом классе ОРМ.

Может кто-нибудь помочь мне ... Если возможно, plz предоставит некоторые ссылки, чтобы я мог получить достаточное представление о том, как работает dll для приложения Windows/Desktop.

+0

«это было для загрузки dll из репозитория, но я также хочу сохранить эти DLL в другом классе ORM». Можете ли вы добавить дополнительную информацию об этом? – TalentTuner

ответ

1

На первый отзыв вы должны использовать Assembly.ReflectionOnlyLoad(). Причина, если вы загружаете сборку с помощью Assembly.LoadFile(), сборка будет автоматически помещена в ваш локальный AppDomain!

Смежные вопросы