zoukankan      html  css  js  c++  java
  • C# TypeDescriptor获取类型转换器,实现泛型转换

    需求背景

    平时的coding过程中,经常性遇到string类型转换成其他的基本类型,如 int double bool等,那我们正常的方式就是下面的方式进行类型转换

    int.Parse("111");
    bool.Parse("true");
    

    那我们有没有其他方式统一这个转换方式呢?

    TypeDescriptor实现统一转换

    下面我就写了一个string的扩展方法

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    
    namespace Common.Extensions
    {
        public static class StringExtension
        {
            public static T Convert<T>(this string input)
            {
                try
                {
                    var converter = TypeDescriptor.GetConverter(typeof(T));
                    if (converter != null)
                    {
                        return (T)converter.ConvertFromString(input);
                    }
                    return default(T);
                }
                catch (Exception)
                {
                    return default(T);
                }
            }
    
            public static object Convert(this string input, Type type)
            {
                try
                {
                    var converter = TypeDescriptor.GetConverter(type);
                    if (converter != null)
                    {
                        return converter.ConvertFromString(input);
                    }
                    return null;
                }
                catch (Exception)
                {
                    return null;
                }
            }
    
        }
    }
    
    

    实现这个方法后,使用其他就会很方便

    "111".Convert<double>();
    "True".Convert<bool>();
    
  • 相关阅读:
    资料链接韦东山和尚观
    资源共享
    总结
    针对piix4_smbus ****host smbus controller not enabled的解决方法
    详解为什么32位系统只能用4G内存.
    在Server 2008下架设FTP服务器
    C面试题
    删除所有的.svn文件夹
    C语言宏定义技巧
    简单的重复登录控制(java版)
  • 原文地址:https://www.cnblogs.com/liuww/p/9359412.html
Copyright © 2011-2022 走看看