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

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

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

Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно так чтоб проверялось наличие библиотеки если она есть - то обьвленные методы функции можно было использовать как только библиотеки нету - то все обьявленные функции не использовать при этом программа написала что библиотеки нету и Код приложения Console_Test_Libraty.exe
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); ;
            }
  
        }
    }
}
Это код библиотеки swich_lib.dll
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);
        }
    }
}
Чтоб не выводило как вот на фото а написала что нету библиотеки да и все а когда библиотека будет выполняло метод metod_testy з библиотеки Помогите пожалуйста, скинте пример

Решение задачи: «.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);
            }
 
        }
    }
}

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы