G>>и в дебаге вижу что t = Proman.IPluginModule, почему то игнорируется
DG>Интерфейс как раз и должен игнорироваться, должны находится только классы, которые реализовывают этот интерфейс.
DG>Почему у тебя не находятся классы? — Имхо, потому что ты ищешь их не в той сборке.
Дык я просто папку с длл-ками сканирую и подключаю в цикле. При чем тут сборка?
Здравствуйте, DarkGray, Вы писали:
G>>Дык я просто папку с длл-ками сканирую и подключаю в цикле. При чем тут сборка?
DG>папка-то правильная?
DG>
да. и длл-ку находит, т.е. я все шаги в дебаге просматриваю. и когда доходит до создания объекта, тут то все накрывается. Ругается, что конструктор на IPluginModule не найден В интерфесе же не надо никаких конструкторов прописывать.
Здравствуйте, godwizard, Вы писали:
G>Здравствуйте, DarkGray, Вы писали:
G>>>Дык я просто папку с длл-ками сканирую и подключаю в цикле. При чем тут сборка?
DG>>папка-то правильная?
DG>>
G>да. и длл-ку находит, т.е. я все шаги в дебаге просматриваю. и когда доходит до создания объекта, тут то все накрывается. Ругается, что конструктор на IPluginModule не найден В интерфесе же не надо никаких конструкторов прописывать.
Здравствуйте, MaxMP, Вы писали:
MMP>Здравствуйте, godwizard, Вы писали:
G>>Здравствуйте, DarkGray, Вы писали:
G>>>>Дык я просто папку с длл-ками сканирую и подключаю в цикле. При чем тут сборка?
DG>>>папка-то правильная?
DG>>>
G>>да. и длл-ку находит, т.е. я все шаги в дебаге просматриваю. и когда доходит до создания объекта, тут то все накрывается. Ругается, что конструктор на IPluginModule не найден В интерфесе же не надо никаких конструкторов прописывать.
MMP>А зачем ты интерфес пытаешься создать?
Здравствуйте, godwizard, Вы писали:
MMP>>А зачем ты интерфес пытаешься создать?
G>Есть другое предложение?
Экземпляр интерфейса не создается, через него можно подергать объект за заранее известные методы, а создаются экземпляры классов, которые реализуют этот интерфейс
Здравствуйте, kreek, Вы писали:
K>Здравствуйте, godwizard, Вы писали:
MMP>>>А зачем ты интерфес пытаешься создать?
G>>Есть другое предложение?
K>Экземпляр интерфейса не создается, через него можно подергать объект за заранее известные методы, а создаются экземпляры классов, которые реализуют этот интерфейс
Может я чего то недопонимаю? Я создал интерфейс, создал класс, имплементирующий данный интерфейс, скомпилировл длл, далее в программе загружаю длл и хочу создать объект этого класса: MyInterface myObject = (MyInterface)asm.CreateInstance(t.FullName);
Или чего то не так?
Здравствуйте, godwizard, Вы писали:
G>Может я чего то недопонимаю? Я создал интерфейс, создал класс, имплементирующий данный интерфейс, скомпилировл длл, далее в программе загружаю длл и хочу создать объект этого класса: MyInterface myObject = (MyInterface)asm.CreateInstance(t.FullName); G>Или чего то не так?
Я не про конкретную задачу, с которой у тебя проблема. А что вообще возвращает asm.CreateInstance(t.FullName)
Здравствуйте, kreek, Вы писали:
K>Здравствуйте, godwizard, Вы писали:
G>>Может я чего то недопонимаю? Я создал интерфейс, создал класс, имплементирующий данный интерфейс, скомпилировл длл, далее в программе загружаю длл и хочу создать объект этого класса: MyInterface myObject = (MyInterface)asm.CreateInstance(t.FullName); G>>Или чего то не так?
K>Я не про конкретную задачу, с которой у тебя проблема. А что вообще возвращает asm.CreateInstance(t.FullName)
Попробовал даже так написать
Object pm = asm.CreateInstance(t.FullName);
выдала вот такой Exception:
[c#]
An unhandled exception of type 'System.MissingMethodException' occurred in mscorlib.dll
Additional information: Constructor on type Proman.IPluginModule not found.
[c#]
Здравствуйте, godwizard, Вы писали:
G>Попробовал даже так написать
Object pm = asm.CreateInstance(t.FullName);
G>выдала вот такой Exception: G>[c#] G>An unhandled exception of type 'System.MissingMethodException' occurred in mscorlib.dll
G>Additional information: Constructor on type Proman.IPluginModule not found. G>[c#]
У тебя скорее всего t.FullName == Proman.IPluginModule, а надо указать класс, который имплементирует этот интерфейс.
Здравствуйте, kreek, Вы писали:
K>Здравствуйте, godwizard, Вы писали:
G>>Попробовал даже так написать
Object pm = asm.CreateInstance(t.FullName);
G>>выдала вот такой Exception: G>>[c#] G>>An unhandled exception of type 'System.MissingMethodException' occurred in mscorlib.dll
G>>Additional information: Constructor on type Proman.IPluginModule not found. G>>[c#]
K>У тебя скорее всего t.FullName == Proman.IPluginModule, а надо указать класс, который имплементирует этот интерфейс.
Извини, я просто не знаю как это писать, если подскажешь, буду благодарен.
Здравствуйте, kreek, Вы писали:
K>Здравствуйте, godwizard, Вы писали:
G>>Извини, я просто не знаю как это писать, если подскажешь, буду благодарен.
K>Кидай сырцы.
K>>У тебя скорее всего t.FullName == Proman.IPluginModule, а надо указать класс, который имплементирует этот интерфейс.
G>Извини, я просто не знаю как это писать, если подскажешь, буду благодарен.
Откуда-то ты это t же берешь? И это t у тебя есть тип интерфейса, а должен быть тип класса, рефлизующего интерфейс!
Так ведь у тебя в сборке ProExplorer.dll объевлен интерфейс IPluginModule и класс имплементирующий его fProExplorer, а клиент имеет свой интерфейс IPluginModule, т.е. получается, что у тебя 2 интерфейса IPluginModule, но fProExplorer реализует тот интерфейс, который объевлен в сборке плагина, поэтому и невозможно сделать приведение типа на клиенте.
Я не знаю откуда ты брал пример, но делать надо не так, т.е. общий интерфейс выносить в отдельную сборку и цеплять ее в сборку плагина и к клиенту, в сборке плагина реализовывать в классах, а на клиенте приводить к этому типу, тогда не будет проблем Invalid cast exception.
Удачи.
G>>>Вот еще тогда такой вопрос. Я плагины хочу перебирать добавлять в меню. У меня MDI приложение и плагины — это дочерние окна. Я в интерфейсе указываю метод выбора пункта меню и в плагине я должен указать MdiParent. Как мне родителя передать? Exe-шник основной референсить?
G>Я тут проблемку эту решил...
Извините за вопрос на вопрос, но все-таки, как вы решили эту проблемку? Заранее спасибо за помощь.