Странный результат 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 как отношение наследования.
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.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.