C# Программа с плагинами.
От: b10t  
Дата: 09.06.03 11:07
Оценка:
Попытался написать прогу на C# с поддержкой плагинов, но чегото не работает, кто нить помогите, зарание спасибо.

Вот сам код программы и плагина.

Плагин:

using System;

public interface IPlugin
{
  string GetName();
}

public class Plugin1:IPlugin
{
  public Plugin1()
  {
    System.Console.WriteLine("Plugin1 start");
  }

  public string GetName()
  {
    return "Plugin1";
  }
}


Сама программа:

using System;
using System.IO;
using System.Reflection;

public interface IPlugin
{
  string GetName();
}

public class PluginsApp
{
  public static void Main()
  {
    string[] files = Directory.GetFiles("plugins", "*.dll");

    foreach(string fname in files)
    {
      Assembly asm = Assembly.LoadFrom(fname);
        
      foreach(Type t in asm.GetExportedTypes())
      {
    if(typeof(IPlugin).IsAssignableFrom(t))//Вот здесь всегда false, почему ?
    {                        
      IPlugin pi = (IPlugin)asm.CreateInstance(t.FullName);
      Console.WriteLine(pi.GetName());
    }
      }
    }        
  }
}



Парюсь уже 3 дня, нечего не получаеться.
Зарание спасибо.
Re: C# Программа с плагинами.
От: Mika Soukhov Stock#
Дата: 09.06.03 11:12
Оценка: 12 (1)
Здравствуйте, b10t, Вы писали:

У тебя 2 реализации интерфейса IPlugin.
Re: C# Программа с плагинами.
От: alexm1202 Россия  
Дата: 09.06.03 11:14
Оценка: 12 (1)
Здравствуйте, b10t, Вы писали:

B>Попытался написать прогу на C# с поддержкой плагинов, но чегото не работает, кто нить помогите, зарание спасибо.


B>Вот сам код программы и плагина.


Так у тебя два разних IPlugin'а. Вынеси объявление IPlugin в отдельную сборку и ссылайся на нее из проектов приложения и плагина.
... << RSDN@Home 1.0 beta 7a >>
BR, Alex.
Re[2]: C# Программа с плагинами.
От: b10t  
Дата: 09.06.03 13:09
Оценка:
Здравствуйте, alexm1202, Вы писали:

A>Так у тебя два разних IPlugin'а. Вынеси объявление IPlugin в отдельную сборку и ссылайся на нее из проектов приложения и плагина.


Извените, а можно маленький пример, как ссылаться из приложения и плагина.

Зарание спасибо.
Re: C# Программа с плагинами.
От: lozzy  
Дата: 09.06.03 14:28
Оценка:
Немного оффтоп:

Никто не знает, как к Студии пишут плагины ? Нет, писать свой не собираюсь — просто интересно. (M/R)SDN прошерстил — не нашел.
Re[3]: C# Программа с плагинами.
От: alexm1202 Россия  
Дата: 10.06.03 04:02
Оценка: 10 (2)
Здравствуйте, b10t, Вы писали:

B>Извените, а можно маленький пример, как ссылаться из приложения и плагина.


1. Создаем новый проект "Class Library", называем его к примеру "PluginIface", помещаем в него код

using System;

namespace PluginIface
{
    public interface IPlugin
    {
        string GetName();
    }
}


Компилируем.
2. Создаем новый проект "Class Library", называем его Plugin1, в меню Project щелкаем Add Reference, потом Browse, выбираем PluginIface.dll, Ok, Ok. Помещаем в проект код

using System;

namespace Plugin1
{
    public class Plugin1:PluginIface.IPlugin 
    {
        public Plugin1()
        {
            System.Console.WriteLine("Plugin1 start");
        }

        public string GetName()
        {
            return "Plugin1";
        }
    }
}


Компилируем.

3. Создаем новый проект "Console Application", опять Project->Add Reference->Browse->PluginIface.dll, помещаем код

using System;
using System.IO;
using System.Reflection;

namespace ConsoleApplication1
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            string[] files = Directory.GetFiles("plugins", "*.dll");

            foreach (string fname in files)
            {
                Assembly asm = Assembly.LoadFrom(fname);

                foreach (Type t in asm.GetExportedTypes())
                {
                    if (typeof(PluginIface.IPlugin).IsAssignableFrom(t))
                    {
                        PluginIface.IPlugin pi = (PluginIface.IPlugin)asm.CreateInstance(t.FullName);
                        Console.WriteLine(pi.GetName());
                    }
                }
            }
        }
    }
}


Компилируем, организуем рядом с результатом каталог plugins, кладем в него Plugin1.dll, запускаем, все.
... << RSDN@Home 1.0 beta 7a >>
BR, Alex.
Re[2]: C# Программа с плагинами.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.06.03 06:22
Оценка:
Здравствуйте, lozzy, Вы писали:

L>Никто не знает, как к Студии пишут плагины ? Нет, писать свой не собираюсь — просто интересно. (M/R)SDN прошерстил — не нашел.


Плохо искал. При установке нужно поставить галочку напротив VS SDK, будет хелп.
... << RSDN@Home 1.1 alpha 1 >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.