static Assembly LoadFrom(string
где
Как только будет получен объект класса Assembly, появится возможность обнаружить определенные в нем типы данных, вызвав для него метод Get Types в приведенной ниже общей форме.
Туре [ ] GetTypesO
Этот метод возвращает массив типов, содержащихся в сборке.
Для того чтобы продемонстрировать порядок обнаружения типов в сборке, потребуются два исходных файла. Первый файл будет содержать ряд классов, обнаруживаемых в коде из второго файла. Создадим сначала файл MyClasses . cs, содержащий следующий код.
// Файл, содержащий три класса и носящий имя MyClasses.cs.
using System;
class MyClass { int x; int y;
public MyClass(int i) {
Console.WriteLine("Конструирование класса MyClass(int). "); x = у = i ;
Show ;
}
public MyClass(int i, intj){
Console.WriteLine("Конструирование класса MyClass(int, int). ") ; x = i;
у = j;
Show;
}
public int Sum { return x+y;
}
public bool IsBetween(int i) {
if ( (x < i) && (i < y)) return true;
else return false; \
}
public void Set(int a, int b) {
Console.Write("В методе Set(int, int). "); x = a;
У = b;
Show;
}
// Перегрузить.метод Set.
public void Set(double a, double b) {
Console.Write("В методе Set(double, double). "); x = (int) a; у = (int) b;
Show ;
}
public void Show {
Console.WriteLine ("Значение x: {0}, значение у: {1}", x, у);
}
}
class AnotherClass { string msg;
public AnotherClass(string str) { msg = str;
}
public void Show {
Console.WriteLine(msg);
class Demo {
static void Main {
Console.WriteLine("Это заполнитель.");
}
}
Этот файл содержит классMyClass,неоднократно использовавшийся в предыдущих примерах. Кроме того, в файл добавлены второй классAnotherClassи третий классDemo.Следовательно, сборка, полученная из исходного кода, находящегося в этом исходном файле, будет содержать три класса. Затем этот файл компилируется, и из него формируется исполняемый файлMyClasses . ехе.Именно эта сборка и будет опрашиваться программно.
Ниже приведена программа, в которой будут извлекаться сведения о файле сборкиMyClasses . ехе.Ее исходный текст составляет содержимое второго файла.
/* Обнаружить сборку, определить типы и создать объект с помощью рефлексии. */
using System;
using System.Reflection;
class ReflectAssemblyDemo { static void Main { int val;
// Загрузить сборку MyClasses.exe.
Assembly asm = Assembly.LoadFrom("MyClasses.exe");
// Обнаружить типы, содержащиеся в сборке MyClasses.exe.
Туре[] alltypes = asm.GetTypes; foreach(Type temp in alltypes)