C#把对象类型转化为指定类型,转化失败时返回该类型默认值

/// <summary>

///通用类型扩展方法类

/// </summary>

public static class ObjectExtensions

{

/// <summary>

///把对象类型转化为指定类型,转化失败时返回该类型默认值

/// </summary>

/// <typeparam name="T"> 动态类型 </typeparam>

/// <param name="value"> 要转化的源对象 </param>

/// <returns> 转化后的指定类型的对象,转化失败返回类型的默认值 </returns>

public static T CastTo<T>(this object value)

{

object result;

Type type = typeof(T);

try

{

if (type.IsEnum)

{

result = Enum.Parse(type, value.ToString());

}

else if (type == typeof(Guid))

{

result = Guid.Parse(value.ToString());

}

else

{

result = Convert.ChangeType(value, type);

}

}

catch

{

result = default(T);

}

return (T)result;

}

/// <summary>

///     把对象类型转化为指定类型,转化失败时返回指定的默认值

/// </summary>

/// <typeparam name="T"> 动态类型 </typeparam>

/// <param name="value"> 要转化的源对象 </param>

/// <param name="defaultValue"> 转化失败返回的指定默认值 </param>

/// <returns> 转化后的指定类型对象,转化失败时返回指定的默认值 </returns>

public static T CastTo<T>(this object value, T defaultValue)

{

object result;

Type type = typeof(T);

try

{

result = type.IsEnum ? Enum.Parse(type, value.ToString()) : Convert.ChangeType(value, type);

}

catch

{

result = defaultValue;

}

return (T)result;

}

}

时间: 2024-08-13 13:38:48

C#把对象类型转化为指定类型,转化失败时返回该类型默认值的相关文章

Python3基础 str find+index 是否存在指定字符串,有则返回第一个索引值

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code [email protected]:~$ source activate py37 (py37) [email protected]:~$ ipython Python 3.7.0 (default, Jun 28 2018, 13:15:42) Type 'copyright'

【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚

标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就是给属性指定一个默认值(就是可以在VS中右键该属性→重置),如果该属性的类型是内置值类型还好,直接使用DefaultValue特性就好,例如: [DefaultValue(false)] public bool CanSelect { get; set; } 对于能够根据字符串常量转换得到的类型也还好,可以这样: [DefaultValue(typeof(Font), "宋体, 9pt")] public

转:LINQ查询返回DataTable类型

动态绑定ReportViewer虽然之前实现过,但现在弄起来还是有点晕,主要是过去没有使用Linq,数据的操作经常用到DataTable,可以直接拿来使用,现在用Linq更方便,也懒得再用之前的数据库连接方式,幸好,最后发现了这篇文章,将linq和datatable连接了起来,因此,我有了前一篇文章和这篇文章这两大法宝,现在可以轻松搞定动态查询生成报表了,不知道网上有没有使用同样方法的人~~~~~ 在使用LINQ查询的时候,一般我们会返回List<T>或IList<T>类型,如下所

自定义控件如何给特殊类型的属性添加默认值 z(转)

自定义控件如何给特殊类型的属性添加默认值 z 定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就是给属性指定一个默认值(就是可以在VS中右键该属性→重置),如果该属性的类型是内置值类型还好,直接使用DefaultValue特性就好,例如: [DefaultValue(false)] public bool CanSelect { get; set; } 对于能够根据字符串常量转换得到的类型也还

自定义控件如何给特殊类型的属性添加默认值 z

定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就是给属性指定一个默认值(就是可以在VS中右键该属性→重置),如果该属性的类型是内置值类型还好,直接使用DefaultValue特性就好,例如: [DefaultValue(false)] public bool CanSelect { get; set; } 对于能够根据字符串常量转换得到的类型也还好,可以这样: [DefaultValue(t

MVC 返回ActionResult 类型

1. Content() 返回文本类型,比如"Hello World!". 2.File() 返回文件类型,如PDF,JPG. 3.HttpNotFound() 返回404 HTTP 状态码. 4.JavaScript() 返回Javascipt 内容. 如 function test(){alert('Hello World');} 5.Json() 返回JSON 数据. 6.PartialView() 返回部分视图内容. 7.Redirect() 返回一个包含 302 跳转状态值,

不要使用可变类型作为参数的默认值

class HauntedBus: """备受幽灵乘客折磨的校车""" def __init__(self, passengers=[]): ? self.passengers = passengers ? def pick(self, name): self.passengers.append(name) ? def drop(self, name): self.passengers.remove(name) ? 如果没传入 passenger

指定列默认值

在不知道或在值丢失的情况下,允许空值是非常使用的.但是,某些时候空值是容易引起争议的,一种更好的办法就是使用默认值.默认值用于在向表中插入行并且未给列指定值时.例如,可以再基于字符的列设置默认值为N/A,而不是在允许为空的情况下自动插入NULL. 下面的创建customers表中,为phone列指定默认值'未输入'.当未为该列指定插入值时,将使用默认值. Create Table customers ( firstName varchar(20) Not Null, lastNname varc

使用泛型实现返回不同类型的对象

本次功能的实现场景:读取Yaml配置文件,然后将其中的信息转换成指定的对象. 在这里定义了一个Yaml的工具类,希望工具类的返回对象类型可以根据调用方法时传入的对象类型来定义. 通过泛型实现 工具类: public class YamlUtil { public <T> T readNodeFromYml(Class<T> type) throws YamlException, FileNotFoundException{ File dumpFile = new File(Syst