КАТЕГОРИИ: Архитектура-(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; Просмотров: 416; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |