通用TryParse

简介:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.ComponentModel;

namespace NetService
{
public static class GenericParser
{
public static bool TryParse<T>(this string input, out T output)
{
bool result = false;
output = default(T);
try
{
var parse = TypeDescriptor.GetConverter(typeof(T));
if (parse != null)
{
output = (T)parse.ConvertFromString(input);
result = true;
}
}
catch
{

}
return result;
}

public static T ConvertType<T>(object val)
{
if (val == null) return default(T);//返回类型的默认值
Type tp = typeof(T);
//泛型Nullable判断,取其中的类型
if (tp.IsGenericType)
{
tp = tp.GetGenericArguments()[0];
}
//string直接返回转换
if (tp.Name.ToLower() == "string")
{
return (T)val;
}
//反射获取TryParse方法
var TryParse = tp.GetMethod("TryParse", BindingFlags.Public | BindingFlags.Static, Type.DefaultBinder,
new Type[] { typeof(string), tp.MakeByRefType() },
new ParameterModifier[] { new ParameterModifier(2) });
var parameters = new object[] { val, Activator.CreateInstance(tp) };
bool success = (bool)TryParse.Invoke(null, parameters);
//成功返回转换后的值,否则返回类型的默认值
if (success)
{
return (T)parameters[1];
}
return default(T);
}
}
}




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/3210561.html,如需转载请自行联系原作者

相关文章
|
3月前
|
JSON 数据库 C++
Rapidjson的使用过程-Parse解析数组遇到的问题,附自己的解决方式
关于RapidJSON,网上有很多资料,RapidJSON是腾讯开源的一个高效的C++ JSON解析器及生成器,它是只有头文件的C++库。RapidJSON是跨平台的,支持Windows, Linux, Mac OS X及iOS, Android。它的源码在https://github.com/Tencent/rapidjson/。这里也不过多介绍如何使用RapidJson,网上有很多如何使用,只介绍自己使用过程中遇到的问题,及其解决问题的方式。
52 0
|
5月前
|
Python
Python参数解析工具argparse.ArgumentParser()
Python参数解析工具argparse.ArgumentParser()
|
6月前
|
安全
10.5 认识XEDParse汇编引擎
XEDParse 是一款开源的x86指令编码库,该库用于将MASM语法的汇编指令级转换为对等的机器码,并以XED格式输出,目前该库支持x86、x64平台下的汇编编码,XEDParse的特点是高效、准确、易于使用,它可以良好地处理各种类型的指令,从而更容易地确定一段程序的指令集。XEDParse库可以集成到许多不同的应用程序和工具中,因此被广泛应用于反汇编、逆向工程、漏洞分析和入侵检测等领域。XEDParse 引擎非常易于使用,读者在使用时只需要通过`XEDPARSE xed = { 0 };`定义一个结构,并通过向`xed.cip`内输送一条汇编指令,当调用`XEDParseAssemble(
46 0
10.5 认识XEDParse汇编引擎
|
9月前
类型转换——convert、parse和try parse
类型转换——convert、parse和try parse
75 0
|
10月前
|
机器学习/深度学习 存储
argparse库
argparse库
categorical_crossentropy与sparse_categorical_crossentropy的区别
categorical_crossentropy与sparse_categorical_crossentropy的区别
|
JSON JavaScript 数据格式
JSON.parse和evel的区别
JSON.parse和evel的区别
66 0
|
JSON 数据格式
parse 和parseObject 有什么区别
JSON.parse()返回的结果是Object对象
179 0
|
Python
argparse使用方法简单总结
argparse使用方法简单总结 argparse是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
325 0
|
Python
Python:urllib解析查询参数parse_qsl、parse_qs
Python:urllib解析查询参数parse_qsl、parse_qs
158 0