代码拉取完成,页面将自动刷新
同步操作将从 blqw/blqw.Convert3 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
全能转换器
对象转换,从未如此简单
obj.To<T>(); //转换失败,抛出异常
obj.To<T>(T defaultValue); //转换失败,返回默认值
obj.To<T>(out succeed); //输出转换是否成功
//下面3个是非泛型方法
obj.To(Type outputType);
obj.To(Type outputType, object defaultValue);
obj.To(Type outputType, out succeed);
//最基本
"1".To<int>();
"a".To<int>(0); //转换失败返回 0
"是".To<bool>(); //支持 "是/否" "真/假" "对/错" "t/f" "true/false" 等
byte[].To<Guid>();
//进阶
"1,2,3,4,5,6".To<int[]>();
"{\"id\":\"name\":\"blqw\"}".To<User>();
Dictionary.To<Entity>(); //键值对转实体
DataRow.To<Entity>(); //数据行转实体
DataTable.To<List<Entity>>; //数据表转实体集合
//更复杂
DataTable.To<List<NameValueCollection>>();
List<Dictionary<string, object>>.To<DataTable>();
new { ID=1, Name="blqw"}.To<User>(); //匿名类转换
//变态嵌套
Dictionary<Guid, Dictionary<int, User>>
.To<Dictionary<string, Dictionary<DateTime, NameValueCollection>>>(); //不能理解就算了
扩展转换行为是以目标类型为参照的
例如要转换为自定义类型MyClass
就需要实现IConvertor<MyClass>
接口
或者直接继承基类BaseConvertor<MyClass>
,并保留默认无参构造函数
IOC组件会自动装载实现IConvertor
的全部类型
MyClass
定义class MyClass
{
public int Number { get; set; }
}
class MyClassConvertor : BaseConvertor<MyClass>
{
protected override MyClass ChangeType(ConvertContext context, object input, Type outputType, out bool success)
{
var i = context.Get<int>().ChangeType(context, input, typeof(int), out success);
return success ? new MyClass() { Number = i } : null;
}
protected override MyClass ChangeType(ConvertContext context, string input, Type outputType, out bool success)
{
var i = context.Get<int>().ChangeType(context, input, typeof(int), out success);
return success ? new MyClass() { Number = i } : null;
}
}
var x = "1234".To<MyClass>(null);
Console.WriteLine(x?.Number); //1234
x = "abcd".To<MyClass>(null);
Console.WriteLine(x?.Number); //null
//数字转大写
//参数说明:1.需要转换的数字,2:是否是简体中文,3:是否需要加上圆角分(只保留两位),4:是否需要支持15位以上的数字
Console.WriteLine(Convert3.NumberToUpper("123456456.789", true, true, false)); //一亿二千三百四十五万六千四百五十六元七角八分
//汉字转拼音
Console.WriteLine(Convert3.ToPinyin("冰麟轻武", PinyinMode.AllFirst)); //BLQW
Console.WriteLine(Convert3.ToPinyin("冰麟轻武", PinyinMode.First)); //B
Console.WriteLine(Convert3.ToPinyin("冰麟轻武", PinyinMode.Full)); //BingLinQingWu
Console.WriteLine(Convert3.ToPinyin("冰麟轻武", PinyinMode.FullWithSplit)); //Bing Lin Qing Wu
//全半角转换
Console.WriteLine(Convert3.ToDBC(",1234567aks"));//,1234567aks
Console.WriteLine(Convert3.ToSBC("!1f23d.?@")); //!1f23d.?@
//摘要/加密
Console.WriteLine(Convert3.ToMD5("123456")); //e10adc3949ba59abbe56e057f20f883e
Console.WriteLine(Convert3.ToSHA1("123456")); //7c4a8d09ca3762af61e59520943dc26494f8941b
//转为动态类型
var a = new Dictionary<string, object>() { ["id"] = 1, ["name"] = "blqw" };
Console.WriteLine(Convert3.ToDynamic(a).name); //blqw
Console.WriteLine(Convert3.ToDynamic(a).id == 1);//True
//随机加密
var arr = new[]
{
Convert3.ToRandomMD5("123456"),
Convert3.ToRandomMD5("123456"),
Convert3.ToRandomMD5("123456"),
Convert3.ToRandomMD5("123456"),
Convert3.ToRandomMD5("123456"),
};
foreach (var g in arr)
{
Console.WriteLine($"{g} : {Convert3.EqualsRandomMD5("123456", g)}");
}
/*
fa91eefc-e903-dbcf-394b-0b757987357b : True
27abd3e0-fe0e-2eeb-1ff7-a60b03876465 : True
6d911bf2-0c59-0e01-5e87-7527dd1ee699 : True
0af7905a-0b3b-4eb4-b82b-0340f3438924 : True
1e024253-6bb9-fb25-4b67-3e42c265af02 : True
*/
string s = "abc"; s.To<string[]>();
将得到一个new string[]{"abc"}
Mapper
类的一个bugIDataReader
转基础类型时会出现错误的问题blqw.IOC
DataReader
转String
错误的问题此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。