Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызвать библиотеку С#? / 25 сообщений из 25, страница 1 из 1
23.01.2017, 17:44
    #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
23.01.2017, 19:09
    #39389789
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBAХотелось бы большего - вызвать библиотеку классов.

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

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


Это для ДЛЛ типа WinAPI.
Нужно подключить NET сборку. Это возможно как-то через Reflection, когда-то видел. Сейчас найти не могу.
Net-сборки вообще просто через using подключаются
Не понимаю проблемы
...
Рейтинг: 0 / 0
23.01.2017, 21:27
    #39389886
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
Cat2Net-сборки вообще просто через using подключаются
Не понимаю проблемыusing - это когда ссылка в проекте C#. Представьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
...
Рейтинг: 0 / 0
23.01.2017, 21:40
    #39389893
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
AppDomain.Load ?
...
Рейтинг: 0 / 0
23.01.2017, 21:43
    #39389896
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBAЭто возможно как-то через Reflection, когда-то видел. Сейчас найти не могу.
System.Reflection.Assembly.Load
...
Рейтинг: 0 / 0
23.01.2017, 21:47
    #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
23.01.2017, 21:55
    #39389907
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBAПока неизвестно, что с этим делать дальше?
забавно свои вопросы формулируете, потренируюсь в телепатии))
Assembly.CreateInstance/Activator.CreateInstance ?
...
Рейтинг: 0 / 0
23.01.2017, 21:59
    #39389910
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBAПредставьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
Не представляю, как это можно заранее не знать, что сборка будет нужна
...
Рейтинг: 0 / 0
23.01.2017, 22:15
    #39389925
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
LRAssembly.CreateInstance/Activator.CreateInstance ?Спасибо. похоже на то, что нужно.
...
Рейтинг: 0 / 0
24.01.2017, 16:45
    #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
24.01.2017, 17:59
    #39390527
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
Cat2YUBAПредставьте, что сборку нужно загрузить по ходу пьесы, из кода, во время исполнения, с диска. Нет у вас ссылки в проекте.
Не представляю, как это можно заранее не знать, что сборка будет нужна
...
Рейтинг: 0 / 0
24.01.2017, 18:04
    #39390533
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
ViPRos, кстати, напомнили, еще надо очистить ресурсы после использования. Не сделал.)
...
Рейтинг: 0 / 0
24.01.2017, 18:11
    #39390539
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBAViPRos, кстати, напомнили, еще надо очистить ресурсы после использования. Не сделал.)
...
Рейтинг: 0 / 0
24.01.2017, 18:17
    #39390544
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
ViPRos, это я про свой экземпл. См. выше. Ваша таблица напомнила, что мне надо это сделать.
...
Рейтинг: 0 / 0
24.01.2017, 18:26
    #39390550
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызвать библиотеку С#?
YUBA,

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


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