Загрузите блок динамично и создайте переменную его типа

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

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 (который является типом, который я должен создать),

любая справка была бы большим спасибо

1
задан happysmile 22 February 2010 в 14:57
поделиться

2 ответа

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

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

object instanceOfMyType = Activator.CreateInstance(type);

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

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

Activator.CreateInstance(assmblyFileName, typeName) 

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

РЕДАКТИРОВАТЬ:

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

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

2
ответ дан 3 September 2019 в 01:11
поделиться

Почему бы не добавить ссылку на сборку? Также на первый взгляд у вас есть орфографическая ошибка, вы написали office в 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
0
ответ дан 3 September 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: