русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Порядок выполнения работы


Дата добавления: 2015-06-12; просмотров: 617; Нарушение авторских прав


В данном порядке выполнения работы рассмотрено создание приложения для просмотра содержимого сборки. Приложение будет выводить на экран интерфейсы и классы сборки, конструкторы, методы и поля классов, передаваемые и возвращаемые параметры методов.

1. Создайте новое приложение Windows Forms. Как создавать приложение, описано в порядке выполнения работы лабораторной работы № 1.

2. Спроектируйте интерфейс пользователя: разместите на форме лавное меню (компонент MenuStrip), добавьте пункт меню «Файл», к пункту меню файл добавьте пункт меню «Открыть сборку».

3. Разместите на форме компонент TreeView и разверните его по размерам формы, добавьте компонент ImageList, свяжите компонент ImageList с TreeView (свойство ImageList), добавьте в него несколько картинок для узлов дерева, добавьте компонент OpenFileDialog.

4. Откройте форму в режиме редактора CSharp, добавьте методы для открытия произвольной сборки с использованием OpenFileDialog:

 

//Получение пути к сборке через OpenFileDialog

private string selectAssemblyFile()

{

openFileDialog1.Filter = "Dll files (*.dll)|*.dll|Exe files

(*.exe)|*.exe| All files (*.*)|*.*";

openFileDialog1.Title = "Select assembly file";

return (openFileDialog1.ShowDialog() == DialogResult.OK) ?

openFileDialog1.FileName : null;

}

 

//Загрузка сборки

private Assembly openAssembly(string path)

{

try

{

Assembly a = Assembly.LoadFrom(path);

return a;

}

catch (Exception)

{

MessageBox.Show("Не удалось загрузить указанную сборку!",

"Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

return null;

}

}

 

5. Добавьте ссылку на сборку над конструктором формы:

 

private Assembly assembly;

 

6. Добавьте методы по добавлению в дерево всех классов и интерфейсов, а также полей, конструкторов и методов класса:



 

//Добавить все классы и интерфейсы сборки к узлу дерева

void addRoot(TreeNode root, Type[] types)

{

TreeNode node = null;

foreach (Type type in types)

{

node = new TreeNode();

node.Text = type.ToString();

//Если класс

if (type.IsClass)

{

node.ImageIndex = 1;

node.SelectedImageIndex = 1;

addFirstLevel(node, type);

root.Nodes.Add(node);

}

//Если интерфейс

else if (type.IsInterface)

{

node.ImageIndex = 2;

node.SelectedImageIndex = 2;

addFirstLevel(node, type);

root.Nodes.Add(node);

}

}

}

 

//Загрузить все поля, конструкторы и методы

private void addFirstLevel(TreeNode node, Type type)

{

TreeNode node1 = null;

 

FieldInfo[] fields = type.GetFields();

MethodInfo[] methods = type.GetMethods();

ConstructorInfo[] constructors = type.GetConstructors();

 

//Загрузить поля

foreach (FieldInfo field in fields)

{

node1 = new TreeNode();

node1.Text = field.FieldType.Name + " " + field.Name;

node1.ImageIndex = 5;

node1.SelectedImageIndex = 5;

node.Nodes.Add(node1);

}

 

//Загрузить конструкторы

foreach (ConstructorInfo constructor in constructors)

{

String s = "";

ParameterInfo[] parametrs = constructor.GetParameters();

foreach (ParameterInfo parametr in parametrs)

{

s = s + parametr.ParameterType.Name + ", ";

}

s = s.Trim();

s = s.TrimEnd(',');

node1 = new TreeNode();

node1.Text = node.Text + "(" + s + ")";

node1.ImageIndex = 6;

node1.SelectedImageIndex = 6;

node.Nodes.Add(node1);

}

 

//Загрузить методы

foreach (MethodInfo method in methods)

{

String s = "";

ParameterInfo[] parametrs = method.GetParameters();

foreach (ParameterInfo parametr in parametrs)

{

s = s + parametr.ParameterType.Name + ", ";

}

s = s.Trim();

s = s.TrimEnd(',');

node1 = new TreeNode();

node1.Text = method.ReturnType.Name + " " + method.Name + "("

+ s + ")";

node1.ImageIndex = 4;

node1.SelectedImageIndex = 4;

node.Nodes.Add(node1);

}

}

 

7. Добавьте обработчик нажатия на пункт меню «Открыть сборку»:

 

private void открытьСборкуToolStripMenuItem_Click(object sender,

EventArgs e)

{

treeView1.Nodes.Clear();

string path = selectAssemblyFile();

if (path != null)

{

assembly = openAssembly(path);

}

if (assembly != null)

{

TreeNode root = new TreeNode();

root.Text = assembly.GetName().Name;

root.ImageIndex = 0;

root.SelectedImageIndex = 0;

treeView1.Nodes.Add(root);

Type[] types = assembly.GetTypes();

addRoot(root, types);

}

}

 

8. Запустите проект и попробуйте открыть сборку. Можно, например, открыть сборку c каталога WINDOWS\Microsoft.NET\Framework.

Внешний вид программы представлен на рисунке 2.1.

Рисунок 2.1 – Внешний вид интерфейса программы



<== предыдущая лекция | следующая лекция ==>
Определение и использование пользовательских атрибутов | Задание на лабораторную работу


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.866 сек.