.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); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д