Я пытаюсь загрузить блок динамично и создать переменную его типа:
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 (который является типом, который я должен создать),
любая справка была бы большим спасибо
Я не уверен, что это сработает для этой сборки, но в целом вы можете сделать это, получив тип из сборки, а затем создать экземпляр с помощью Activator.CreateInstance :
Type type = assembly.GetType("MyType");
object instanceOfMyType = Activator.CreateInstance(type);
вам необходимо знать имя типа, который вы хотите создать ('Excel.Application'?)
, вы также можете получить тип непосредственно из dll, если знаете путь к нему:
Activator.CreateInstance(assmblyFileName, typeName)
Я не уверен, что это сработает для этой сборки, так как это сборка COM-взаимодействия, поэтому я думаю, что вам, возможно, придется использовать COM для доступа к ней, но это возможно.
РЕДАКТИРОВАТЬ:
вам, вероятно, лучше использовать для этого документированные методы:
Целевые приложения Office с помощью основных сборок взаимодействия должно быть хорошим местом для начала
Почему бы не добавить ссылку на сборку? Также на первый взгляд у вас есть орфографическая ошибка, вы написали 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