Я только что обнаружил очень странное поведение с Type.GetInterface и вложенными типами.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.
- станда имеет значение TYPEOF (IStandardInterface)
- вложенные имеют значение нуля
ожидается ли это поведение или ошибка? Если вы ожидаете, можете ли вы объяснить, почему?
Я использую .net Framework версии 3.5 SP1.
Я преобразовал его в thisType.GetInterfaces(). Содержит (interfaceType), мне нужно, чтобы проверить, возвращает ли фабрика объекты, имеющие определенный интерфейс (поэтому у меня нет экземпляра для использования is/as). – Fionn