.NET 3.x Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету? - C#

Узнай цену своей работы

Формулировка задачи:

Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно так чтоб проверялось наличие библиотеки если она есть - то обьвленные методы функции можно было использовать как только библиотеки нету - то все обьявленные функции не использовать при этом программа написала что библиотеки нету и Код приложения Console_Test_Libraty.exe
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. using swich_lib;
  7. namespace Console_Test_Libraty
  8. {
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. Console.BackgroundColor=ConsoleColor.DarkCyan;
  14. Console.Clear();
  15. Console.ForegroundColor=ConsoleColor.White;
  16. Console.Title = "Тест библиотек";
  17. Assambly_dll_exist("swich_lib.dll");
  18. }
  19.  
  20. private const string myclass_assambly = "swich_lib.test_class";
  21. static void Assambly_dll_exist(string file_dll)
  22. {
  23. string fi = Environment.CurrentDirectory + "\\" + file_dll;
  24. Assembly dll=null;
  25. try
  26. {
  27. dll = Assembly.LoadFile(fi);
  28. }
  29. catch (Exception ex)
  30. {
  31. //Console.WriteLine(ex.Message);
  32. Console.WriteLine("Библиотека отсутствует : "+dll.FullName);
  33. Console.ReadKey(true);
  34. }
  35. Type myclass = null;
  36. try
  37. {
  38. myclass = dll.GetType(myclass_assambly);
  39. if (myclass==null)
  40. throw new Exception("Не удаеться загрузить: " + myclass_assambly);
  41. }
  42. catch (Exception ex)
  43. {
  44. Console.WriteLine(ex.Message);
  45. Console.ReadKey(true); ;
  46. }
  47.  
  48. /*MethodInfo[] m = myclass.GetMethods();
  49. if (m.Length<5)
  50. return;*/
  51. object instance = Activator.CreateInstance(myclass);
  52. object[] parameters = {true, "Ура получилось", 2};
  53. MethodInfo mi = null;
  54. //MethodAccessException activ_metod=new MethodAccessException();
  55. try
  56. {
  57. mi = myclass.GetMethod("metod_testy");
  58. }
  59. catch (Exception ex)
  60. {
  61. Console.WriteLine(ex.Message);
  62. Console.ReadKey(true); ;
  63. }
  64. try
  65. {
  66. mi.Invoke(instance, parameters); // это я не понял
  67. // мне нужно просто использовать метод metod_testy("ляляля")
  68. // Как это сделать ?
  69. }
  70. catch (Exception ex)
  71. {
  72. Console.WriteLine(ex.Message);
  73. Console.ReadKey(true); ;
  74. }
  75. }
  76. }
  77. }
Это код библиотеки swich_lib.dll
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace swich_lib
  6. {
  7. public class test_class
  8. {
  9. public void metod_testy(string str)
  10. {
  11. Console.WriteLine(" Если этот текст вывело то значит");
  12. Console.WriteLine(" библиотека проверена и метод metod_testy");
  13. Console.WriteLine(" используеться шас выводя str в приложении");
  14. Console.WriteLine(" ///////////////////////////////\n\n");
  15. Console.WriteLine(str);
  16. Console.ReadKey(true);
  17. }
  18. }
  19. }
Чтоб не выводило как вот на фото а написала что нету библиотеки да и все а когда библиотека будет выполняло метод metod_testy з библиотеки Помогите пожалуйста, скинте пример

Решение задачи: «.NET 3.x Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?»

textual
Листинг программы
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using swich_lib;
  9.  
  10. namespace ConsoleApplication4
  11. {
  12.     class Program
  13.     {
  14.         static void Main(string[] args)
  15.         {
  16.             Console.BackgroundColor = ConsoleColor.DarkCyan;
  17.             Console.Clear();
  18.             Console.ForegroundColor = ConsoleColor.White;
  19.             Console.Title = "Тест библиотек";
  20.             Assambly_dll_exist("swich_lib.dll");
  21.         }
  22.  
  23.        
  24.  
  25.        
  26.         static void Assambly_dll_exist(string file_dll)
  27.         {
  28.  
  29.             string fi = AppDomain.CurrentDomain.BaseDirectory + "\\" + file_dll;
  30.             Assembly dll = null;
  31.  
  32.             if (File.Exists(fi))
  33.             {
  34.                 dll = Assembly.LoadFile(fi);
  35.                 test_class test = new test_class();
  36.                 test.metod_testy("Текст вывожу"); // метод библиотеки
  37.             }
  38.             else
  39.             {
  40.                 Console.WriteLine("Библиотека отсутствует : " + fi);
  41.                 Console.ReadKey(true);
  42.             }
  43.  
  44.         }
  45.     }
  46. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы