Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Порядок выполнения работы. В данном порядке выполнения работы рассмотрено создание приложения для просмотра содержимого сборки
В данном порядке выполнения работы рассмотрено создание приложения для просмотра содержимого сборки. Приложение будет выводить на экран интерфейсы и классы сборки, конструкторы, методы и поля классов, передаваемые и возвращаемые параметры методов. 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 – Внешний вид интерфейса программы
|