Преобразование типов, являющихся наследниками Attribute - C#
Формулировка задачи:
Здравствуйте. Столкнулся с такой проблемой. Читаю Шилдта и встретился мне такой пример:
В классе Example вызывается метод GetCustomAttribute, который возвращает объект типа Attribute. Но при этом данный объект преобразовывается в тип RemarkAttribute, являющийся производным для класса Attribute. Т.е. получается производный_класс = (производный_класс) базовый_класс. Как такое возможно? Поясните, пожалуйста.
Листинг программы
- using System;
- [AttributeUsage(AttributeTargets.All)]
- public class RemarkAttribute: Attribute
- {
- public string Remark { get; private set; }
- public RemarkAttribute(string str)
- {
- Remark = str;
- }
- }
- [RemarkAttribute("Ремарка от атрибута")]
- class MyClass
- {
- }
- class Example
- {
- static void Main()
- {
- Type objForTypeMyClass = typeof(MyClass);
- Type objForTypeOfAttribute = typeof(RemarkAttribute);
- RemarkAttribute re = (RemarkAttribute) Attribute.GetCustomAttribute(objForTypeMyClass, objForTypeOfAttribute); // в этом месте непонятно
- }
- }
Решение задачи: «Преобразование типов, являющихся наследниками Attribute»
textual
Листинг программы
- namespace Program
- {
- class A
- { }
- class B:A
- { }
- class Program
- {
- static A Dummy(B obj) {
- return (A)obj;
- }
- static void Main() {
- A objA = new A();
- B objB = (B)Dummy(new B());
- Console.WriteLine(objB.GetType());
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д