Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример применения рефлексии

Рефлексия

Файл проекта, использующий созданную библиотеку

Файл библиотеки с именем ClassLibrary1.dll

Пример создания и использования собственной библиотеки

Создание собственной библиотеки

Для того, чтобы создать собственную библиотеку необходимо выбрать файл проекта - шаблон ClassLibrary. Библиотека хранится в виде файла с расширением *.DLL. Для использования такой библиотеки необходимо создать собственный проект и включить в него с помощью команды Project->Add Reference файл собственной библиотеки с расширением dll.

Все классы, включенные в библиотеку, желательно объявлять с режимом доступа public.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ClassLibrary1

{

public class Monster

{

public Monster(int сила, int умение, string имя)

{ this.сила = сила;

this.умение = умение;

this.имя = имя;

}

public virtual void Passport()

{Console.WriteLine("Монстр {0} сила = {1} умение= {2}", имя, сила, умение);}

public int Сила

{ get { return сила; }

set {if (value > 0) сила = value;

else сила = 0; }

}

public int Умение

{ get {return умение; }

set {if (value > 0) умение = value;

else умение = 0; }

}

public string Имя

{get {return имя; }

}

string имя;

int сила, умение;

}

//производный класс от монстра – демон, умеющий “думать”

public class Daemon: Monster

{

public Daemon(int сила, int умение, string имя, int ум)

: base(сила, умение, имя)

{ this.ум = ум; }

public override void Passport()

{

Console.WriteLine("Демон {0} сила = {1} умение {2} ум = {3}", Имя, Сила, Умение, ум);

}

public void Think()

{

Console.Write(Имя + "это ");

for (int i = 0; i < ум; i++) Console.Write(" думает ");

Console.WriteLine("...");

}

int ум;

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using ClassLibrary1; //ПОДКДЮЧЕНИЕ собственной библиотеки

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Monster a = new Monster(1, 1, "вася");

a.Passport();

Monster [] mas = new Monster[2];

mas[0] = new Monster(2, 2, "Петя");

mas[1] = new Daemon(0, 0, "Демон Вася", 1);

foreach (Monster x in mas)

x.Passport();

Console.ReadKey();

}

}

}

Рефлексия – это получение информации о всех типах в программе во время ее выполнения. Например, можно получить список всех классов, интерфейсов и т.д. в сборке используя класс System.Type и типы пространства имён System.Reflection.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Reflection;

using ClassLibrary1;

namespace ConsoleApplication1

{

class Program

{

static void Info(Type t)

{

Console.WriteLine("Класс " + t.FullName);

if (t.IsAbstract) Console.WriteLine("Класс - абстрактный");

if (t.IsClass) Console.WriteLine("Класс - Обычный");

Console.WriteLine("базовый класс" + t.BaseType);

MethodInfo[] mas = t.GetMethods();

foreach (MethodInfo x in mas)

Console.WriteLine(x);

PropertyInfo[] mas1 = t.GetProperties();

foreach (PropertyInfo x in mas1)

Console.WriteLine(x);

}

static void Main(string[] args)

{

Monster a = new Monster(1, 1, "вася");

a.Passport();

Type t = typeof(Monster);

Info(t);

t = typeof(Daemon);

Info(t);

Console.ReadKey();

}

}

}

<== предыдущая лекция | следующая лекция ==>
 | Программа социально-экономического развития
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 384; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.