.NET 3.x Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету? - C#
Формулировка задачи:
Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету
Что нужно , мне нужно так чтоб проверялось наличие библиотеки
если она есть - то обьвленные методы функции можно было использовать
как только библиотеки нету - то все обьявленные функции не использовать
при этом программа написала что библиотеки нету и
Код приложения Console_Test_Libraty.exe
Это код библиотеки swich_lib.dll
Чтоб не выводило как вот на фото
а написала что нету библиотеки
да и все
а когда библиотека будет выполняло метод metod_testy з библиотеки
Помогите пожалуйста, скинте пример
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using swich_lib;
- namespace Console_Test_Libraty
- {
- class Program
- {
- static void Main()
- {
- Console.BackgroundColor=ConsoleColor.DarkCyan;
- Console.Clear();
- Console.ForegroundColor=ConsoleColor.White;
- Console.Title = "Тест библиотек";
- Assambly_dll_exist("swich_lib.dll");
- }
- private const string myclass_assambly = "swich_lib.test_class";
- static void Assambly_dll_exist(string file_dll)
- {
- string fi = Environment.CurrentDirectory + "\\" + file_dll;
- Assembly dll=null;
- try
- {
- dll = Assembly.LoadFile(fi);
- }
- catch (Exception ex)
- {
- //Console.WriteLine(ex.Message);
- Console.WriteLine("Библиотека отсутствует : "+dll.FullName);
- Console.ReadKey(true);
- }
- Type myclass = null;
- try
- {
- myclass = dll.GetType(myclass_assambly);
- if (myclass==null)
- throw new Exception("Не удаеться загрузить: " + myclass_assambly);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadKey(true); ;
- }
- /*MethodInfo[] m = myclass.GetMethods();
- if (m.Length<5)
- return;*/
- object instance = Activator.CreateInstance(myclass);
- object[] parameters = {true, "Ура получилось", 2};
- MethodInfo mi = null;
- //MethodAccessException activ_metod=new MethodAccessException();
- try
- {
- mi = myclass.GetMethod("metod_testy");
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadKey(true); ;
- }
- try
- {
- mi.Invoke(instance, parameters); // это я не понял
- // мне нужно просто использовать метод metod_testy("ляляля")
- // Как это сделать ?
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.ReadKey(true); ;
- }
- }
- }
- }
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace swich_lib
- {
- public class test_class
- {
- public void metod_testy(string str)
- {
- Console.WriteLine(" Если этот текст вывело то значит");
- Console.WriteLine(" библиотека проверена и метод metod_testy");
- Console.WriteLine(" используеться шас выводя str в приложении");
- Console.WriteLine(" ///////////////////////////////\n\n");
- Console.WriteLine(str);
- Console.ReadKey(true);
- }
- }
- }
Решение задачи: «.NET 3.x Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using swich_lib;
- namespace ConsoleApplication4
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.BackgroundColor = ConsoleColor.DarkCyan;
- Console.Clear();
- Console.ForegroundColor = ConsoleColor.White;
- Console.Title = "Тест библиотек";
- Assambly_dll_exist("swich_lib.dll");
- }
- static void Assambly_dll_exist(string file_dll)
- {
- string fi = AppDomain.CurrentDomain.BaseDirectory + "\\" + file_dll;
- Assembly dll = null;
- if (File.Exists(fi))
- {
- dll = Assembly.LoadFile(fi);
- test_class test = new test_class();
- test.metod_testy("Текст вывожу"); // метод библиотеки
- }
- else
- {
- Console.WriteLine("Библиотека отсутствует : " + fi);
- Console.ReadKey(true);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д