//C# Generic String Parser Extension Method
using System;
using System.ComponentModel;
public class Test
{
public static void Main()
{
string s = "32";
int i = s.As<int>() + 10;
Console.WriteLine(i);
string b = "false";
if(b.As<bool>())
{
Console.WriteLine("True");
}
else
{
Console.WriteLine("False");
}
}
}
/*
C# Generic String Parser Extension Method
Usage Example
string s = "32";
int i = s.As<int>();
*/
public static class StringExtensions
{
public static T As<T>(this string strValue, T defaultValue)
{
T output = defaultValue;
if (output == null)
{
output = default(T);
}
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null)
{
try
{
output = (T)converter.ConvertFromString(strValue);
}
catch (Exception ex)
{
throw ex;
}
}
return output;
}
public static T As<T>(this string strValue)
{
return strValue.As<T>(default(T));
}
}
Ly9DIyBHZW5lcmljIFN0cmluZyBQYXJzZXIgRXh0ZW5zaW9uIE1ldGhvZAp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5Db21wb25lbnRNb2RlbDsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlzdHJpbmcgcyA9ICIzMiI7CgkJaW50IGkgPSBzLkFzPGludD4oKSArIDEwOwoJCUNvbnNvbGUuV3JpdGVMaW5lKGkpOwoJCXN0cmluZyBiID0gImZhbHNlIjsKCQlpZihiLkFzPGJvb2w+KCkpCgkJewoJCQlDb25zb2xlLldyaXRlTGluZSgiVHJ1ZSIpOwoJCX0KCQllbHNlCgkJewoJCQlDb25zb2xlLldyaXRlTGluZSgiRmFsc2UiKTsKCQl9Cgl9Cn0KCgovKgpDIyBHZW5lcmljIFN0cmluZyBQYXJzZXIgRXh0ZW5zaW9uIE1ldGhvZApVc2FnZSBFeGFtcGxlCnN0cmluZyBzID0gIjMyIjsKaW50IGkgPSBzLkFzPGludD4oKTsKKi8KcHVibGljIHN0YXRpYyBjbGFzcyBTdHJpbmdFeHRlbnNpb25zCiAgICB7ICAgICAgICAKICAgICAgICBwdWJsaWMgc3RhdGljIFQgQXM8VD4odGhpcyBzdHJpbmcgc3RyVmFsdWUsIFQgZGVmYXVsdFZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgVCBvdXRwdXQgPSBkZWZhdWx0VmFsdWU7CiAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgb3V0cHV0ID0gZGVmYXVsdChUKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBUeXBlQ29udmVydGVyIGNvbnZlcnRlciA9IFR5cGVEZXNjcmlwdG9yLkdldENvbnZlcnRlcih0eXBlb2YoVCkpOwogICAgICAgICAgICBpZiAoY29udmVydGVyICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRyeQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IChUKWNvbnZlcnRlci5Db252ZXJ0RnJvbVN0cmluZyhzdHJWYWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRocm93IGV4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyBUIEFzPFQ+KHRoaXMgc3RyaW5nIHN0clZhbHVlKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHN0clZhbHVlLkFzPFQ+KGRlZmF1bHQoVCkpOwogICAgICAgIH0KfQ==