2010-09-03 1 views
1

J'utilise Fieldinfo.FieldType.FullName pour obtenir le type de données de champ. Pour une chaîne que je reçois System.String mais pour un Double-je obtenirFieldinfo.FieldType.FullName ne donne pas le type de données pour datetime et double

System.Nullable`1 [[System.Double, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]

même pour DateTime i get System.Nullable`1 [[System.DateTime, mscorlib, version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]]

Je dois vérifier dans mon code si ce domaine particulier est une date-heure, puis faire une certaine action. Comment puis-je vérifier que le champ est un double ou une chaîne ou double etc

Merci à l'avance

Répondre

4

La réponse de JaredPar est une bonne explication. Pour une solution, essayez:

Type fieldType = fieldInfo.FieldType; 
if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable<>)) 
    fieldType = fieldType.GetGenericArguments()[0]; 

Maintenant, vous pouvez juste dire:

if (fieldType == typeof(double)) 
    ... 

etc. Ce code sera essentiellement "annuler" la sémantique de type Nullable.

1

Le problème ici est le domaine en question est en fait un double? et DateTime? et non une plaine ancienne double/DateTime. Le ? à la fin du nom de type est un raccourci pour le nom complet Nullable<double> qui n'est pas la même chose qu'un double.

Il semble que vous vouliez vraiment utiliser ce champ. Il y a deux façons dont vous pouvez aborder cette

  • Faire le type de champ fait double au lieu de double?
  • Est-ce que l'action si le type est double ou double?.
+0

Je reçois ces données de Salesforce. Je ne suis pas vraiment sûr si le type de données est double ou double? Mon problème est de savoir comment je vais vérifier quel type de données est-il. Je vérifie le type de données en utilisant la classe FieldInfo. Fieldinfo.FieldType.FullName. Cela retourne la culture de version etc avec le Syatem.DateTime. comme mentionné dans ma question. Comment puis-je confirmer que le type est double ou string ou datetime dans l'instruction If – Prady

Questions connexes