mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-11 17:57:19 +10:00
41 lines
1002 B
C#
41 lines
1002 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Manager
|
|
{
|
|
public static class Polyfill
|
|
{
|
|
public static T ParseTo <T> (this string src, T dflt = default (T))
|
|
{
|
|
if (string.IsNullOrWhiteSpace (src)) return dflt;
|
|
try
|
|
{
|
|
Type targetType = typeof (T);
|
|
Type underlying = Nullable.GetUnderlyingType (targetType);
|
|
if (underlying != null)
|
|
{
|
|
object v = Convert.ChangeType (src, underlying, CultureInfo.InvariantCulture);
|
|
return (T)v;
|
|
}
|
|
if (targetType.IsEnum)
|
|
{
|
|
object enumValue = Enum.Parse (targetType, src, true);
|
|
return (T)enumValue;
|
|
}
|
|
TypeConverter converter = TypeDescriptor.GetConverter (targetType);
|
|
if (converter != null && converter.CanConvertFrom (typeof (string)))
|
|
{
|
|
object v = converter.ConvertFrom (null, CultureInfo.InvariantCulture, src);
|
|
return (T)v;
|
|
}
|
|
}
|
|
catch { }
|
|
return dflt;
|
|
}
|
|
}
|
|
}
|