powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рантайм классы?
10 сообщений из 10, страница 1 из 1
Рантайм классы?
    #32088305
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как на с# загрузить и пользовать DLL,
не имея от нее заголовков и незная чего в ней.
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088341
Маveric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего за Dll, .Net-овская?
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088346
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в моем случае нетовская
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088360
Маveric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ещё сам не делал, только читал )
Вроде все делается через сборки ( класс System.Reflection.Assembly) и отражение. Знаю точно, что можно получить список всех классов, методов и свойств, а также их атрибуты. ну и конечно воспользоватся всем етим.
Примерчик могу завтра скинуть (к книге на компакте прилагается) .
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088367
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду очень признателен за примерчик.
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088399
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.microsoft.com/rus/msdn/magazine/archive/08_2002/cpp.asp

там в архиве примеры - см.файл Win32API.cs
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088403
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нет, сорри, там уже ЗНАЯ, что хочешь получить
ну, может пригодится...
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088657
Маveric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отправил!
Я его несколько переделал и добавил коментарии, так что смотри.
P.S. при попытке открыть файл не нетовский в коде
Assembly a=Assembly.LoadFrom(Имя файла); возникнет исключение т.к. нет манифеста сборки. Так что пример только для файлов Net.
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088673
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может кинешь код прямо в форум, для общего развития так сказать
...
Рейтинг: 0 / 0
Рантайм классы?
    #32088697
Маveric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прога выводит названия всех методов из Dll наход. в текущей директории
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
using System;
using System.Reflection;
using System.IO;

class LateBindingApp
{
  public static void Main()
  {
   // загружаем в массив все имена файлов с маской *.dll
   // из текущей директории
   string[] fileNames = Directory.GetFiles (Environment.CurrentDirectory,  "*.dll" );

	 foreach(string fileName in fileNames)

	{
			Console.WriteLine( "Загружается DLL '{0}'" , fileName);
			// пытаемся загрузить сборку из файла
			Assembly a = Assembly.LoadFrom(fileName);
			// загружаем в массив все типы сборки
			Type[] types = a.GetTypes();
			// в цикле перебираем все типы сборки
			foreach(Type t in types)
			{
				// в этом месте можно получить всю информацию о типе 
				// например, загрузить все его методы в массив
				MethodInfo[] allMeth = t.GetMethods(); 
				// 
				// или получить имя класса: string ClassName = t.Name;
				foreach (MethodInfo mi in allMeth )
				{
					Console.WriteLine ( "Метод - " + mi.Name);
					// Для вызова метода использутся класс Activator
				}
						
			}
	}
	Console.ReadLine();
	}
}
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рантайм классы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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