Преобразование типов, являющихся наследниками 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());
}
}
}