Re: Странный результат GetGenericArguments()[0].BaseType
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.09.06 06:31
Оценка: 12 (2)
Здравствуйте, nikov, Вы писали:

N>С чем связан такой странный результат, и определно ли такое поведение в стандарте?

N>Такое впечатление, что механизм отражения интерпретирует ограничение where T : Derived как отношение наследования.

Вот, нашел:

If the current Type represents a type parameter of a generic type definition, BaseType returns the class constraint, that is, the class the type parameter must inherit. If there is no class constraint, BaseType returns System.Object.

Странный результат GetGenericArguments()[0].BaseType
От: nikov США http://www.linkedin.com/in/nikov
Дата: 21.09.06 06:27
Оценка:
using System;

class Base { }
class Derived : Base { }
class Foo<T> where T : Derived { }

class Program
{
    static void Main()
    {
        Type foo = typeof(Foo<Derived>);
        Type T = foo.GetGenericTypeDefinition().GetGenericArguments()[0];
        Console.WriteLine(T.BaseType);
    }
}

Derived


С чем связан такой странный результат, и определно ли такое поведение в стандарте?
Такое впечатление, что механизм отражения интерпретирует ограничение where T : Derived как отношение наследования.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.