Je voudrais voir si un objet est builtin data type en C#Y at-il une fonction pour vérifier si un objet est un type de données intégré?
Je ne veux pas vérifier tous si possible.
C'est, je ne le font pas veulent faire:
Object foo = 3;
Type type_of_foo = foo.GetType();
if (type_of_foo == typeof(string))
{
...
}
else if (type_of_foo == typeof(int))
{
...
}
...
Mise à jour
Je suis en train de créer un récursive PropertyDescriptorCollection où les types de PropertyDescriptor pourraient ne pas être des valeurs intrinsèques. Donc, je voulais faire quelque chose comme ça (ndlr: cela ne fonctionne pas encore, mais je travaille là-dessus):
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection cols = base.GetProperties(attributes);
List<PropertyDescriptor> list_of_properties_desc = CreatePDList(cols);
return new PropertyDescriptorCollection(list_of_properties_desc.ToArray());
}
private List<PropertyDescriptor> CreatePDList(PropertyDescriptorCollection dpCollection)
{
List<PropertyDescriptor> list_of_properties_desc = new List<PropertyDescriptor>();
foreach (PropertyDescriptor pd in dpCollection)
{
if (IsBulitin(pd.PropertyType))
{
list_of_properties_desc.Add(pd);
}
else
{
list_of_properties_desc.AddRange(CreatePDList(pd.GetChildProperties()));
}
}
return list_of_properties_desc;
}
// This was the orginal posted answer to my above question
private bool IsBulitin(Type inType)
{
return inType.IsPrimitive || inType == typeof(string) || inType == typeof(object);
}
Je voulais créer récursivement un PropertyDescriptorCollection et j'avais besoin de vérifier si le type est intégré ou non. Je voulais créer une nouvelle collection si l'une des propriétés n'était pas un type intégré. Je vais ajouter ce que j'essaie de faire dans la question, peut-être que cela aidera – SwDevMan81
Mais pourquoi cette décision serait-elle basée sur la spécification C#?Pourquoi voudriez-vous traiter Decimal d'une manière, mais DateTime ou Guid d'une manière différente? –
Bon, ça ne devrait pas être, c'était un oubli de ma part. System.ValueType doit également être vérifié. – SwDevMan81