Ich muss ein Objekt validieren, um zu sehen, ob es Null ist, ein Werttyp, oder IEnumerable<T>
, wobei T
ein Werttyp ist. Bisher habe ich:Wie finde ich heraus, ob der Objekttyp eine Unterklasse von IEnumerable <T> für einen beliebigen Werttyp T ist?
if ((obj == null) ||
(obj .GetType().IsValueType))
{
valid = true;
}
else if (obj.GetType().IsSubclassOf(typeof(IEnumerable<>)))
{
// TODO: check whether the generic parameter is a value type.
}
So habe ich festgestellt, dass das Objekt null ist, ein Werttyp oder IEnumerable<T>
für einige T
; Wie überprüfe ich, ob T
ein Werttyp ist?
Ist GetInterfaces ausreichend rekursive Sie bedeuten nicht, die Eltern über das Gehen auf Grund zur Sorge Arten? –
@Jon: Ich denke schon, ja. –
Sie brauchen keine Rekursion. Eine Klasse implementiert entweder eine Schnittstelle oder sie tut dies nicht. Es ist eine flache Liste, unabhängig davon, wie die Schnittstellen sich gegenseitig "erben". – Tar