value.GetType().GetElementType() == typeof(string)
в качестве дополнительного бонуса (но я не уверен на 100%. Это код, который я использую ...)
var ienum = value.GetType().GetInterface("IEnumerable`1");
if (ienum != null) {
var baseTypeForIEnum = ienum.GetGenericArguments()[0]
}
с этим вы можете искать List, IEnumerable ... и получать T.