Как только будет получен объект класса 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)

Console.WriteLine("Найдено: " + temp.Name);

Console.WriteLine() ;

Перейти на страницу:

Похожие книги