Я узнаю, как динамическая загрузка dll для программирования. У меня есть тестовый класс по библиотеке:Обратный экземпляр класса в динамической библиотеке
public class Class1
{
public int Number { get; set; }
public string GetWorld()
{
return "Hello world!";
}
}
В моей программе код динамической нагрузке эта библиотеки и функции TestLibraryMethod возвращает экземпляр класса из библиотеки. Так как это написано правильно?
class Program
{
static void Main(string[] args)
{
try
{
var DLL = Assembly.LoadFile(@"C:\TestLibrary.dll");
var reportType = DLL.GetTypes().ToList().Where(t => t.Name == "Class1").Single();
var instance = Activator.CreateInstance(reportType);
Class1 test=(call TestLibraryMethod()?)
Console.WriteLine(test.Number);
Console.WriteLine(test.GetWorld());
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
public static Class1 TestLibraryMethod()
{
Class1 test = new Class1();
test.Number = 5;
return test;
}
}
Что вам нужно подумать о том, как программа может знать о сборке во время компиляции, когда вы ссылаетесь только на нее во время выполнения. –
Я понимаю, что это невозможно. В этой ситуации я задаю в этой теме, как было бы лучше? – user3231442
Мне интересно, почему вы это делаете. Основная причина, по которой я могу думать о динамической загрузке таких сборок, - это такие вещи, как плагины, и в этом случае я ожидаю, что у вас будет интерфейс, который они должны реализовать, чтобы затем использовать его для обозначения этого типа. Возможно, вы должны объяснить немного больше о том, что вы пытаетесь достичь здесь? – Chris