Skip to content

HZ-GeLiang/AutoPrimitive

Repository files navigation

AutoPrimitive

当前Nuget包的作用: Type Conversion of Primitive Data Types

项目背景

  • 基础类型的值互相转换在c#这种强类型语言中转换比较麻烦,常见的方法有:

    • 使用原生的

      • 字符类型: xxx.ToString()
      • 其他类型(含字符串): Convert.ToXXX()
    • 使用扩展方法:最后实现方式为 :

      • using 扩展方法

      • 对象.ToXXX()

        缺点

        1. 需要引用命名空间,虽然可以用GolbalUsing获其他方法来绕开(这个不是致命的,本包也需要)
        2. 需要和前面的变量保持类型一致或兼容(如果变量调整了,代码有可能要调整)
        var a = 1.ToFloat()
        double b = 1.ToFloat();
  • 痛点:如果有一种方式可以间接实现JS的弱类型的特点用起来就嘎嘎好,代码在增加少了性能的前提下提高可维护性。

  • 希望程序的运行稳定性和人一样: 龙行龘龘(dá dá)前程朤朤(lǎng lǎng)生活䲜䲜(yè yè)健康𣊫𣊫(liù liù)财运𨰻𨰻(bǎo bǎo)

                                  _ooOoo_
                                 o8888888o
                                 88" . "88
                                 (| -_- |)
                                 O\  =  /O
                              ____/`---'\____
                            .'  \\|     |//  `.
                           /  \\|||  :  |||//  \
                          /  _||||| -:- |||||-  \
                          |   | \\\  -  /// |   |
                          | \_|  ''\---/''  |   |
                          \  .-\__  `-`  ___/-. /
                        ___`. .'  /--.--\  `. . __
                     ."" '<  `.___\_<|>_/___.'  >'"".
                    | | :  `- \`.;`\ _ /`;.`/ - ` : | |
                    \  \ `-.   \_ __\ /__ _/   .-` /  /
               ======`-.____`-.___\_____/___.-`____.-'======
                                  `=---='
               ^^^^^^^^^^^^^^^0 ERROR 0 Warning^^^^^^^^^^^^^^
    

现有的类型转换支持

  • 枚举:PrimitiveEnum

  • Primitive 各种基础类型

    数值类型: short ushort int uint char float double long ulong decimal 其他类型: bool byte sbyte 其他:string

  • PrimitiveDateOnly

  • PrimitiveDateTime

  • PrimitiveNullable

  • PrimitiveString

默认约定

  • 转Bool类型:

    • 数字: 非0即真

    • 字符串: 若可以被bool/int解析则返回解析结果, 否认返回false

      核心代码: 
      return bool.TryParse(primitive.Value, out var result1) && result1 == true ||
      int.TryParse(primitive.Value, out var result2) && result2 != 0;

涉及到的相关知识点

About

Type conversion of Primitive Data Types

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages