Есть обобщенный класс парсер
public delegate bool TryParse<T>(string value, out T result);
public class Parser
{
public static T Parse<T>(string value, TryParse<T> tryParse)
{
T result;
if (tryParse(value, out result))
return result;
return default(T);
}
}
Есть также список системных типов
public static System.Type GetSystemType(string type)
{
switch (type)
{
case "System.Int16":
return Type.GetType(type);
case "System.Int32":
return Type.GetType(type);
case "System.Int64":
return Type.GetType(type);
case "System.DateTime":
return Type.GetType(type);
case "System.Boolean":
return Type.GetType(type);
case "System.Decimal":
return Type.GetType(type);
case "System.Double":
return Type.GetType(type);
}
}
Ну вот собственно и проблема как можна сделать вот такое
Работает
Parser.Parse<DateTime>("01.01.2014", DateTime.TryParse);
Не работает
Parser.Parse<GetSystemType("System.DateTime")>("01.01.2014", GetSystemType("System.DateTime").TryParse);
То есть идея в том что бы в парсер можна было передавать тип данных через функцию а не вписывать вручную
Спасибо.