Convert.ChangeType("1", typeof(bool))
Rückkehr zu einem LaufzeitfehlerConvert string „1“ oder „0“ wahr oder falsch Bool
ist es eine Möglichkeit, dieses Verhalten zu ändern?
Ich möchte Convert.ChangeType("1", typeof(bool)) return
wahr Convert.ChangeType("0", typeof(bool))
Rückkehr false
UPDATE
Lesen Kommentare und Antworten vielleicht habe ich nicht klar genug gewesen
Angenommen, ein Wörterbuch von <object,Type>
haben, wo Typ der Zieltyp
foreach (var element in dictionary)
{
object convVal = Convert.ChangeType(element.Key, element.Value);
}
wenn element.Key
ist "1"
und elemen.Value
ist bool
würde ich true
Wer bekommen kann mir Anregungen geben ein ähnliches Verhalten
zumindest besser, dass dies etwas zu implementieren:
public static class Convert
{
public static object ChangeType(object val, Type type)
{
if (val is string && type == typeof(bool))
{
switch (((string)val).Trim().ToUpper())
{
case "TRUE":
case "YES":
case "1":
case "-1":
return true;
default:
return false;
}
}
return System.Convert.ChangeType(val, type);
}
}
Kann die Typeconverter sein richtiger Weg?
Bitte denken, bevor Kommentare oder Antworten oder Zeichen Frage stellen als
dupliziert
Haben Sie sich die Mühe gemacht, das zu googeln? – tnw
Was ist falsch mit Convert.ToBoolean? – Milster
@Milster Es wird die gleiche Ausnahme ohne eine zusätzliche Umwandlung werfen. _ (wie in Avitus 'Antwort) _ –