1 Star 0 Fork 11

zyj0021 / 超级转换器

forked from 紫剑真人 / 超级转换器 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Fork me on Gitee

Converts

超级转换器

.NET Standard 2.0 重新设计
老项目已经停止维护 Convert3

更新日志

SuperConvert
SuperConvert.Dynamic
SuperConvert.Json

说明

对象转换,从未如此简单

obj.To<T>();                //转换失败,抛出异常
obj.To<T>(T defaultValue);  //转换失败,返回默认值

代码展示

//最基本
"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>>>(); //不能理解就算了

扩展自定义转换器

[TestMethod]
public void 自定义转换器()
{
    var i = 11;
    var my = i.To<MyClass>();
    Assert.AreEqual(i, my.ID);
}

public class MyClass
{
    public int ID { get; set; }
}

public class MyConvertor : AllowNullConvertor<MyClass>, IFrom<int, MyClass>
{
    public ConvertResult<MyClass> From(IConvertContext context, int input)
    {
        return new MyClass() { ID = input };
    }
}

智能识别自定义转换方法

[TestMethod]
public void 自定义强转()
{
    var i = 11;
    var my = i.To<MyClass>();
    Assert.AreEqual(i, my.ID);
}

public class MyClass
{
    public int ID { get; set; }
    public static explicit operator MyClass(int i) => new MyClass() { ID = i };
}
[TestMethod]
public void 自定义隐转()
{
    var i = 11;
    var my = i.To<MyClass2>();
    Assert.AreEqual(i, my.ID);
}

public class MyClass2
{
    public int ID { get; set; }
    public static implicit operator MyClass2(int i) => new MyClass2() { ID = i };
}

其他功能

//数字转大写
Console.WriteLine(Converts.ToChineseAmount("123456456.789")); //壹亿贰仟叁佰肆拾伍万陆仟肆佰伍拾陆元柒角捌分
Console.WriteLine(Converts.ToChineseNumber("123456456.789")); //一亿二千三百四十五万六千四百五十六点七八九
Console.WriteLine(Converts.ToChineseAmount("123456456.789", true)); //一亿二千三百四十五万六千四百五十六元七角八分

//全半角转换
Console.WriteLine(Converts.ToDBC(",1234567aks"));//,1234567aks
Console.WriteLine(Converts.ToSBC("!1f23d.?@"));         //!1f23d.?@

//摘要/加密
Console.WriteLine(Converts.ToMD5("123456"));    //e10adc3949ba59abbe56e057f20f883e
Console.WriteLine(Converts.ToSHA1("123456"));   //7c4a8d09ca3762af61e59520943dc26494f8941b

//随机加密
var arr = new[]
{
    Converts.ToRandomMD5("123456"),
    Converts.ToRandomMD5("123456"),
    Converts.ToRandomMD5("123456"),
    Converts.ToRandomMD5("123456"),
    Converts.ToRandomMD5("123456"),
};

foreach (var g in arr)
{
    Console.WriteLine($"{g} : {Converts.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
*/

空文件

简介

转换,从未如此简单 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/zyj0021/super-convert.git
git@gitee.com:zyj0021/super-convert.git
zyj0021
super-convert
超级转换器
master

搜索帮助