Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с PlugIn`ами, Неправильная работа PlugIn 
:(
    Опции темы
Uvs
Дата 9.10.2008, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.8.2007
Где: Челябинск

Репутация: нет
Всего: нет



Доброе утро всем! Возникла проблема. 
Программа ищет в директории dll-ки, в них находятся классы наследующие определенный interface. Создаем объекты этих классов при помощи позднего связывания.

public abstract class Bank 
  {
    public string Name { get; set; }
    public string Account { get; set; }
    public string Bic { get; set; }
    public string Corr { get; set; }

    public Bank(){}
    public Bank(string name, string account, string bic, string corr)
    {
      Name = name;
      Account = account;
      Bic = bic;
      Corr = corr;
    }

  public interface IConvert
  {
    string Name { get; set; }
    List<string> Read();
    void Export(object lbx);
  }

  public class AgroImpuls : Bank, IConvert 
  {
    private cIni ini;
    private List<string> Heads;
    private Array keyValues;

    public AgroImpuls() : this("", "", "", "") {}
    public AgroImpuls(string name, string account, string bic, string corr)
      : base(name, account, bic, corr)
    {
      ini = new cIni(Application.StartupPath + "\\Convert.ini");
      Heads = new List<string>();
      Name = "Агроимпульс";
      keyValues = new Array[0];
    }


В основной программе создаются объекты типов:
 string folder = System.AppDomain.CurrentDomain.BaseDirectory;
 string[] files = Directory.GetFiles(folder, "*.dll");
      
 foreach (string file in files) 
{
  Assembly asm = Assembly.LoadFrom(file);
  Type[] types = asm.GetTypes();

        foreach (Type type in types)
        {
          Type t = type.GetInterface("IConvert");
          if(t != null)
          {
            plg = asm.CreateInstance(type.FullName) as IConvert;
            paymentList.Clear();
            paymentList = plg.Read(); // метод Read в каждой dll-ке заполняет и возвращяет List<string>Heads
          }
        }
}

позже, когда я вызываю другие методы dll-ки и бращаюсь к списку Heads - он почему-то оказывается пустым.
В чем тут прчина? Никак в толк не возьму!
PM MAIL ICQ Skype   Вверх
Alekz
Дата 10.10.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



В вашем примере список Heads в классе AgroImpuls не заполняется в конструкторе. Так что он и должен оставаться пустым в точке вызова IConvert.Read().


Это сообщение отредактировал(а) Alekz - 10.10.2008, 09:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.