Devo convalidare un oggetto per vedere se è nullo, un tipo di valore, oppure IEnumerable<T>
dove T
è un tipo di valore. Finora ho:Come scoprire se il tipo di un oggetto è una sottoclasse di IEnumerable <T> per qualsiasi tipo di valore T?
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.
}
Così ho scoperto che l'oggetto è nullo, un tipo di valore, o per qualche IEnumerable<T>
T
; come faccio a verificare se quello T
è un tipo di valore?
È getInterfaces sufficientemente ricorsiva a significare che non è necessario preoccuparsi di salire al genitore tipi? –
@ Jon: Penso di sì, sì. –
Non hai bisogno di ricorsione. Una classe implementa un'interfaccia o no. È un elenco semplice, indipendentemente da come le interfacce stesse "si ereditano" a vicenda. – Tar