Я только что обнаружил очень странное поведение с Type.GetInterface и вложенными типами.
Следующий пример кода покажет проблему, я использую Type.FullName интерфейса, чтобы проверить, происходит ли данный тип из этого интерфейса:
public interface IStandardInterface {}
public class StandardClass : IStandardInterface {}
class Program
{
public interface INestedInterface {}
public class NestedClass : INestedInterface { }
static void Main()
{
var stdIfName = typeof (IStandardInterface).FullName;
var nestedIfName = typeof (INestedInterface).FullName;
var std = typeof(StandardClass).GetInterface(stdIfName);
var nested = typeof(NestedClass).GetInterface(nestedIfName);
}
}
Если я выполняю приведенный выше код, он работает для StandardClass, но не для NestedClass.
- std имеет значение typeof (IStandardInterface)
- вложенный имеет значение ноль
Это поведение ожидается или ошибка? Если это ожидается, не могли бы вы объяснить, почему?
Я использую .net Framework версии 3.5 SP1.