J'ai regardé les différentes options qui semblent être disponibles sur le framework .NET (je pense). En particulier, je l'ai regardé 1. TypeConverter 2. Convert.Toxxx 3. Convert.ChangeTypeChangeType, Convert - Conversion d'un type à un autre
Chacun d'entre eux pour une raison ou une autre ne travaille pas pour moi. Je suis assez surpris qu'il ne semble pas y avoir de solution dans le framework .NET pour ce genre de choses. Je suppose que je ne suis pas le seul à en avoir besoin;)
Voici ce que j'essaie de faire. Essentiellement, j'ai un tas de formulaires html qui sont utilisés dans une application. Ces formulaires permettent aux utilisateurs d'entrer des données (évidemment) et j'ai besoin d'extraire ces données dans différents types de données.
Ces types de données sont des types simples, des types primitifs, des types de valeurs, des types de référence et des types de référence personnalisés. En d'autres termes: 1. Int32, Int64, double, décimal, DateTime etc. 2. Int32 [], double [], chaîne [] et éventuellement d'autres tableaux de types primitifs 3. divers objets DTO personnalisés qui ont les éléments ci-dessus types en tant que propriétés.
La "entrée" est sous la forme d'une chaîne de caractères typiquement depuis que je suis en terre. Pour vous donner une idée des raisons pour lesquelles les solutions existantes ne fonctionnent pas pour moi, jetez un oeil à l'adresse suivante entrées « chaîne » nécessitant une conversion
- « 1,234 » -> Int32
- « 1,234 $ » -> Int32
- "$ 1,234", ce -> int32
- "" -> int32
- "1,2,3,4,5" -> Int32 []
- "0" ou "false" OU " False "OU" off "-> Boolean false
Je sais comment convertir chacun de ces cas à la main, mais je cherche quelque chose qui fait partie du cadre que j'ai manqué ou une solution décente qui gère les types d'entrées énumérées ci-dessus.
Je pense que la raison pour laquelle vous ne trouvez pas ce que vous cherchez est que ce que vous décrivez est un nombre arbitraire de "règles" pour convertir un nombre arbitraire de types de données. Il ne serait tout simplement pas possible de tenter cela au niveau du cadre, car il y aurait toujours des cas limites qui ne fonctionneraient pas. Ce que je ferais est de créer une classe de conversion spéciale qui connaît ces cas spéciaux et les manipule (avant de passer par défaut à TypeConverter.ChangeType, etc ...). Ensuite, vous pouvez réutiliser ce code là où vous en avez besoin. – Chris