Re: Создание плагинов
От: Аноним  
Дата: 28.07.05 11:52
Оценка:
ОК.
Код интерфейсной сборки:
using System;
namespace Mutant
{
 public interface IInitializable
 {
  void Initialize(IServiceProvider serviceProvider);
 }
 public interface IPlugIn: IInitializable
 {
  void DoIt();
 }
 public interface IServer
 {
  void PrintKarrramba();
 }
}



Код сервера:
using System;
using System.Reflection;
namespace Mutant
{
 public class Server: IServer, IServiceProvider
 {
  public Server()
  {
   Assembly assm = Assembly.LoadFrom("PlugIn.dll");
   Type plug_in_type = assm.GetType("Mutant.PlugIn");
   IPlugIn plug_in = Activator.CreateInstance(plug_in_type) as IPlugIn;
   plug_in.Initialize(this);
   plug_in.DoIt();
  }
  private static void Main()
  {
   Server server = new Server();
  }
  public void PrintKarrramba()
  {
   Console.WriteLine("Karrramba");
  }
  public object GetService(Type serviceType)
  {
   if (serviceType == typeof(IServer))
   {
    return this;
   }
   return null;
  }
 }
}



Код плагина:
using System;
namespace Mutant
{
 public class PlugIn: IPlugIn
 {
  private IServer server;
  public void Initialize(IServiceProvider serviceProvider)
  {
   server = serviceProvider.GetService(typeof(IServer)) as IServer;
  }
  public void DoIt()
  {
   if (server != null)
   {
    server.PrintKarrramba();
   }
  }
 }
}


Соответственно на интерфейсную сборку ссылаются и сервер и плагин.
Deny everything...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.