powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызвать библиотеку С#?
25 сообщений из 25, страница 1 из 1
Вызвать библиотеку С#?
    #39389717
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем некий простенький слабенький скриптовый язык. Однако он поддерживает включения кода С#
Пишем, к примеру:
Код: c#
1.
2.
3.
4.
5.
6.
7.
using (System.IO.StreamWriter sw = System.IO.File.CreateText(path)) 
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
sw.Close(); sw.Dispose();
}

Все работает.
Хотелось бы большего - вызвать библиотеку классов.
В C# понятно - ссылка и вперед.
Как это сделать из кода С#? MSDN обсмотрелся.))

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389789
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAХотелось бы большего - вызвать библиотеку классов.

Ну вы же используете: System.IO.File.CreateText -- ни что иное, как функция из библиотеки классов.
В чём затык?
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389841
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
YUBAИмеем некий простенький слабенький скриптовый язык
Сами написали этот язык или речь про PowerShell?
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389842
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу вы же используете: System.IO.File.CreateText -- ни что иное, как функция из библиотеки классов.
В чём затык?Свою библиотеку. ДЛЛ. Делается как то через System.Reflection, но найти ничего вразумительного, типа экземпла или описания, не получается
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389849
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Сами написали этот язык или речь про PowerShell? Левый скриптовый язык с нулевой функциональностью. Поддерживает включения кода c NET объектами. Мне нужно решение C# по подключению своей ДЛЛ непосредственно из С#.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389857
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
YUBAМне нужно решение C# по подключению своей ДЛЛ непосредственно из С#.
Оно явно не лежит рядом со своим скриптовым языком, а лежит на направлении импорта DLL через
Код: c#
1.
[DllImport("MY.dll")]
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389869
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Оно явно не лежит рядом со своим скриптовым языком, а лежит на направлении импорта DLL через
Код: c#
1.
[DllImport("MY.dll")]

Это для ДЛЛ типа WinAPI.
Нужно подключить NET сборку. Это возможно как-то через Reflection, когда-то видел. Сейчас найти не могу.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389878
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
YUBACat2Оно явно не лежит рядом со своим скриптовым языком, а лежит на направлении импорта DLL через
Код: c#
1.
[DllImport("MY.dll")]


Это для ДЛЛ типа WinAPI.
Нужно подключить NET сборку. Это возможно как-то через Reflection, когда-то видел. Сейчас найти не могу.
Net-сборки вообще просто через using подключаются
Не понимаю проблемы
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389886
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Net-сборки вообще просто через using подключаются
Не понимаю проблемыusing - это когда ссылка в проекте C#. Представьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389893
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AppDomain.Load ?
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389896
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAЭто возможно как-то через Reflection, когда-то видел. Сейчас найти не могу.
System.Reflection.Assembly.Load
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389901
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока на MSDN нарыл вот это - https://msdn.microsoft.com/ru-ru/library/1009fa28(v=vs.110).aspx
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
// Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
//   Type = System.String
//   Position = 0
//   Optional=False
foreach (ParameterInfo Param in Params)
{
    Console.WriteLine("Param=" + Param.Name.ToString());
    Console.WriteLine("  Type=" + Param.ParameterType.ToString());
    Console.WriteLine("  Position=" + Param.Position.ToString());
    Console.WriteLine("  Optional=" + Param.IsOptional.ToString());
}

Пока неизвестно, что с этим делать дальше?
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389907
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAПока неизвестно, что с этим делать дальше?
забавно свои вопросы формулируете, потренируюсь в телепатии))
Assembly.CreateInstance/Activator.CreateInstance ?
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389910
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
YUBAПредставьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
Не представляю, как это можно заранее не знать, что сборка будет нужна
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39389925
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRAssembly.CreateInstance/Activator.CreateInstance ?Спасибо. похоже на то, что нужно.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390460
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В итоге получилось вот это:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Assembly assem;
assem = Assembly.LoadFrom("c:\\NetDLL\\ClassLibrary.dll");
Object Cl1 = assem.CreateInstance("ClassLibrary.Class1");
Type t = assem.GetType("ClassLibrary.Class1");
MethodInfo add = t.GetMethod("Add");
Object[] param = new Object[2];
param[0] = 4.55;
param[1] = 3.14;
Console.WriteLine(add.Invoke(Cl1, param));

Осталось перенести в текс скрипта, и можно будет вызывать из скрипта функции ДЛЛ.
Может кому сгодится.)) Всем спасибо.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390527
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2YUBAПредставьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
Не представляю, как это можно заранее не знать, что сборка будет нужна
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390533
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, кстати, напомнили, еще надо очистить ресурсы после использования. Не сделал.)
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390539
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAViPRos, кстати, напомнили, еще надо очистить ресурсы после использования. Не сделал.)
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390544
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, это я про свой экземпл. См. выше. Ваша таблица напомнила, что мне надо это сделать.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39390550
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,

да я понял :)
просто сказал а, то пришлось выложить и б
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39391414
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед тем как загрузить какой то класс из произвольной сборки, нужно определить какие то соглашения на то, каким должен быть получаемый экземляр класса. Для это сушествуют интерфейсы.
Вы в сборке создаете класс наследованный интерфейсом, а в программе загружаете сборку, запрашивайте все классы заданного интерфейса и через класс Activator создаете экземпляры этого класса, а работаете с ним через interface. примерно так.
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39391704
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesПеред тем как загрузить какой то класс из произвольной сборки, нужно определить какие то соглашения на то, каким должен быть получаемый экземляр класса. Для это сушествуют интерфейсы....Все хорошо, только для использования в скрипте это слишком сложно.
Впрочем, задача уже решена. В скрипте это выглядит примерно так.
Код: c#
1.
2.
3.
System.Reflection.Assembly assem;
assem = System.Reflectiion.Assembly.LoadFrom("c:\\NetDLL\\ClassLibrary.dll");
//Далее в этом стиле
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39391740
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesПеред тем как загрузить какой то класс из произвольной сборки, нужно определить какие то соглашения на то, каким должен быть получаемый экземляр класса. Для это сушествуют интерфейсы.
Вы в сборке создаете класс наследованный интерфейсом, а в программе загружаете сборку, запрашивайте все классы заданного интерфейса и через класс Activator создаете экземпляры этого класса, а работаете с ним через interface. примерно так.++
...
Рейтинг: 0 / 0
Вызвать библиотеку С#?
    #39391752
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, что никто не сказал про MEF
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызвать библиотеку С#?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]