Ich habe gerade ein sehr seltsames Verhalten mit Type.GetInterface und verschachtelten Typen entdeckt.
Der folgende Beispielcode zeigt das Problem. Ich verwende den Type.FullName einer Schnittstelle, um zu prüfen, ob ein bestimmter Typ von dieser Schnittstelle abgeleitet ist:
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);
}
}
Wenn ich den obigen Code ausführe, funktioniert er für StandardClass, aber nicht für NestedClass.
- std hat einen Wert von typeof(IStandardInterface)
- verschachtelt hat einen Wert von null
Ist dieses Verhalten zu erwarten oder ein Fehler? Wenn es erwartet wird, könnten Sie erklären, warum?
Ich verwende .net Framework Version 3.5 SP1.