.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);
}
}
}
}