Динамически загружать сборку и создавать переменную ее типа - PullRequest
1 голос
/ 22 февраля 2010

Я пытаюсь загрузить сборку динамически и создать переменную ее типа:

Assembly Ass= Assembly.LoadFrom(@"d:\abc\microsoft.office.interop.excel.dll");
foreach(Type Excel Assembly.Gettypes())
{
    // here now  Type contains
    // Excel.nameSpace="microsoft.officce.interop.excel"

    // now i need to creae an variable of  type "Excel"

    microsoft.officce.interop.excel.applicationClass excel= null;
    // something like this 
    //Here  Excel is my nameSpace
    Excel.officce.interop.excel.applicationClass excel= null
}

Я работаю над этим из прошлых 2-х дней, помогите как я могу объявить свою переменную типа Excel (это тип, который мне нужно создать)

любая помощь будет отличной спасибо

Ответы [ 2 ]

2 голосов
/ 22 февраля 2010

Я не уверен, что это будет работать для этой сборки, но в целом вы можете сделать это, получив тип из сборки и затем создать экземпляр, используя Activator.CreateInstance :

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);

вам нужно знать имя типа, который вы хотите создать ('Excel.Application'?)

вы также можете получить тип напрямую из dll, если знаете путь к нему:

Activator.CreateInstance(assmblyFileName, typeName) 

Я не уверен, что это будет работать для этой сборки, так как это сборка взаимодействия COM, поэтому я думаю, что вам, возможно, придется использовать COM для доступа к ней, но это возможно.

EDIT:

вам, вероятно, лучше использовать документированные методы для этого:

Целевые офисные приложения с помощью основных сборок взаимодействия должно быть хорошим местом для начала

0 голосов
/ 22 февраля 2010

Почему бы не добавить ссылку на сборку? Кроме того, на первый взгляд у вас есть орфографическая ошибка, вы написали офис в microsoft.officce.interop с двумя буквами C, что может быть причиной, если вы скопировали и вставили код.

Вот как я использую Excel COM:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApp = new Excel.ApplicationClass();

Редактировать:

Также я вижу, что у вас проблемы с пространством имен. Пространство имен Excel не существует, поскольку вы ранее закомментировали пространство имен Excel, поэтому должно работать следующее само по себе.

Microsoft.Office.Interop.Excel.ApplicationClass excel = null;

без:

Excel.officce.interop.excel.applicationClass excel= null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...