У меня есть DLL, написанная на C#. В этой DLL есть класс, который определен. Давайте предположим, что код этой DLL является:Как создать экземпляр класса, объявленного в C# DLL?
namespace unloadableDLL
{
public class DivisionClass
{
public /*static*/ long Division(long x, long y)
{
// We deliberately do not use a try catch to catch divide by 0 exceptions
return (x/y);
}
}
}
Теперь я хочу, чтобы загрузить динамически этот DLL в тестовой программе. Мне нужно посмотреть, что произойдет, если я делюсь на ноль в двух следующих случаях: 1) DLL загружается напрямую (без использования AppDomain) 2) DLL не загружается напрямую, сначала создается приложение AppDomain, а затем загружает DLL ,
Я совершенно новый в C#, новым я имею в виду, что я начал менее 4 часов назад, но у меня есть фон на C++.
Моя проблема заключается в том, что в моей тестовой программе мне необходимо создать объект DivisionClass, но этот объявлен только в DLL. => Решенного
Моей тестовой программа
class Program
{
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
static void Main(string[] args)
{
// Load the DLL
Console.WriteLine("Attempting to load unloadableDLL");
Assembly a = Assembly.LoadFrom("./unloadableDLL.dll");
unloadableDLL.DivisionClass divisionObject = (unloadableDLL.DivisionClass)a.CreateInstance("unloadableDLL.DivisionClass");
long number = divisionObject.Division(8, 2);
Console.WriteLine(number);
}
}
Я не знаю, что, но составители твердят мне, что статический член unloadableDLL.DivisionClass.Division (долгота, длинная) не может быть доступна с экземпляром Справка; квалифицируйте его с помощью typename.
Спасибо всем
вы имеете в виду вызов DivisionClass.Division (х, у), которая на самом деле не создание экземпляра DivisionClass, так как это статический метод? –
Что вы пробовали? Обратите внимание, что вам не нужно создавать экземпляр, поскольку 'Division' является статическим методом. –
вызывается непосредственно из вашей ссылки проекта for.eg 'unloadableDLL.DivisionClass.Division (100,10) '. Поскольку это статический метод, вам не нужно создавать экземпляр. – Turbot