Category - C#/.Net

2020-10-12 18:36:32    95    0    0
2019-07-03 23:50:47    702    0    0

问题大概是皓月我和一个古巴人的代码协调的时候遇到的。
死活没有搞清楚digest()是啥。
网上也没有、然后就摸清楚了

python 的hashlib.sha256(xxx).digest()

其实就是得出sha256之后、digest()就是一个二进制数组对象
相当于C#的byte[]

python代码

  1. import hashlib
  2. hash = hashlib.sha256("ABC").digest()

C#代码

  1. string str = "ABC";
  2. byte[] bytes = Encoding.UTF8.GetBytes(str);
  3. byte[] hash = SHA256Managed.Create().ComputeHash(bytes);

python 的 hashlib.sha256(xxx).hexdigest()

其实就是得出sha256之后、hexdigest()就是一个十六进制数组对象
相当于C#的byte[]

Python代码

  1. import hashlib
  2. name1 = hashlib.sha256("ABC").hexdigest()

C#

  1. static void Main(string[] args)
  2. {
  3. string str = "ABC";
  4. str = sha256(str).ToLower();//相当于python hashlib.sha256(str).hexdigest()
  5. }
  6. public static string sha256(string data)
  7. {
  8. byte[] bytes = Encoding.UTF8.GetBytes(data);
  9. byte[] hash = SHA256Managed.Create().ComputeHash(bytes);
  10. StringBuilder builder = new StringBuilder();
  11. fo
2019-06-16 15:38:42    113    0    0

EF使用mysql时 不要使用DbParameter 会抛出异常

  1. Only MySqlParameter objects may be stored

使用专有的 MySqlParameter ,在Mysql.Data。

DataTime类型需在映射时需要注意。

————————

映射到模型的查询:报错

  1. Unable to convert MySQL date/time value to System.DateTime

解决:在连接字符串里追加

  1. Allow Zero Datetime=True

隱藏的最深的坑之一

D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PrivateAssemblies

安裝目錄中,在安裝mysql for visual studio 之後
会写入MySql.Data.dll等三个文件 dll文件版本和

2017-10-08 23:24:11    344    0    0
  1. 会把属性获取推导多一个Get前缀
  2. 并且错误识别成方法组
  3. 比如
  4. _gamecenterEn.Database.xxxx
  5. 推导成
  6. _gamecenterEn.get_Database().xxxxx
  7. 一般手动去掉“get_”前缀和方法括号"()"
  8. 代码就正确了
  9. 初始化的属性值
  10. 会被放在外面赋值,然而这样是不被允许的。
  11. 而且属性名称被追加了"set_"前缀,导致找不到
  12. 例如
  13. IsoDateTimeConverter expr_05 = new IsoDateTimeConverter(); expr_05.set_DateTimeFormat("yyyy'-'MM'-'dd' 'HH':'mm':'ss");
  14. 改成 初始化赋值 更正属性值名称即可
  15. IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss" };
  16. ## get set 方法有概率推到 成为如下造型 运行可能异常
  17. public string value
  18. {
  19. [CompilerGenerated]
  20. get
  21. {
  22. return value;
  23. }
  24. [CompilerGenerated]
  25. set
  26. {
  27. this.value = value;
  28. }
  29. }

改为 普通 get set 方法即可

  1. public string value {get;set;}
2019-12-11 09:56:47    1432    0    0

引入SevenZipBase 和 7z.dll

  1. public R7z()
  2. {
  3. var path = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "7z\\7z.dll");
  4. SevenZipBase.SetLibraryPath(path);
  5. }

我们看到SevenZipBase 中的构造方法有四个
传入文件路径的带密码的和不带密码的、传入Stream的带密码的和不带密码的

  1. public SevenZipExtractor(Stream archiveStream);
  2. public SevenZipExtractor(string archiveFullName);
  3. public SevenZipExtractor(string archiveFullName, string password);
  4. public SevenZipExtractor(Stream archiveStream, string password);

我们的资源文件读取都是byte[] ,转换成Stream调用对应构造方法即可

  1. static void Main(string[] args)
  2. { @"C:\Users\Administrator\Desktop\2a2baf80-8ded-4a09-80d4-880a740ebb49");
  3. new R7z().Decompression(BytesToStream(Resources.资源文件), @"C:\Users\35337\Desktop\123456");
  4. Console.WriteLine("完毕");
  5. Console.ReadLine();
  6. }
  7. public static Stream BytesToStream(byte[] bytes)
  8. {
  9. Stream stream = new MemoryStream(bytes);
  10. return stream;
  11. }
2019-11-21 14:28:01    363    0    0

关闭VS、删除文件(即连接对象用户li'sh'ji

  1. C:\Users\yoghurt\AppData\Roaming\Microsoft\VisualStudio\16.0_06025061\ServerExplorer\DefaultView.SEView
2019-06-18 20:42:18    242    0    0

神特么是时间格式造成的。

微软的印度CEO...


控制面板 时间 -> 格式 -> 其他设置 -> 重置


然后重新打开Visual Studio Install

2018-03-16 15:00:15    182    0    0

由于在集团化公司企业内部

会对于组织架构复杂、
在不同的子公司、不同的部门、或者岗位
会套上不同的薪酬计算公式

财务/人事部门 在薪酬管理职能的需求上、
必然要进行若干套公式管理

既要满足、操作者能够录入普通数学公式
系统便于解析准确运算的情况下、
必然要做相应的设计

下面是我自己的一种设计思路

公式格式示例
[PID:1]+[PID:2]-[PID:3]*[PID:4]/[NUM:1]

公式占位逻辑

工资项格式:
[PID:项目编号ID]

常量:
[NUM:常量值]

运算符
+ - * /

比如

要实现的公式:基本工资+绩效工资+奖金+车费补贴100元

——————————————————
工资项目 | 工资项编号
基本工资 | 1
绩效工资 | 2
奖金 | 3
——————————————————

那么在程序中存储的表达式就为

[PID:1]+[PID:2]+[PID:3]+[NUM:100]

张三的基本工资2000、
绩效工资800、
奖金500

然后我们解析公式

2000+800+500+100

运算结果
3400

这里我写了一个最简单的参考性的 代码示例
(未考虑性能、仅思路)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace HaoYue.DynamicMath
  7. {
  8. class Program
  9. {
  10. /// <summary>
  11. /// 动态公式解析和计算 代码实现
  12. /// 研发部 皓月
  13. /// </summary>
  14. /// <param name=\"args\"></param>
  15. static void Main(string[] args)
  16. {
  17. Console.WriteLine(\"【动态公式解析和计算 代码实现研究】\\n研发部
2017-11-04 16:09:04    442    0    0
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication17
    {
    class Program
    {
    static void Main(string[] args)
    {
    //Application.EnableVisualStyles();
    //Application.SetCompatibleTextRenderingDefault(false);

    1. /**
    2. * 当前用户是管理员的时候,直接启动应用程序
    3. * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
    4. */
    5. //获得当前登录的Windows用户标示
    6. System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
    7. System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
    8. //判断当前登录用户是否为管理员
    9. if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
    10. {
    11. //如果是管理员,则直接运行
2017-06-06 17:26:48    185    0    0

首先第一步
通过反射实现字符串调用程序集下的类
比如我们有一些功能类库、需要动态调用
如下:

  1. namespace Sin365AIProject_01
  2. {
  3. public class B_Test1
  4. {
  5. public void GetT1()
  6. {
  7. Console.WriteLine("T1方法调用成功");
  8. }
  9. public void GetT2()
  10. {
  11. Console.WriteLine("T2方法调用成功");
  12. }
  13. }
  14. }

那么我们先写一个方法做反射实现、
四个参数、
分别是 程序集名称、类的名称、要调用的方法名称、
以及 要调用的方法的参数集合

代码如下

  1. /// <summary>
  2. ///
  3. /// </summary>
  4. /// <param name="AssemblyName"></param>
  5. /// <param name="ClassFullName"></param>
  6. /// <param name="Method"></param>
  7. static void RefMainSet(string AssemblyName, string ClassFullName, string MethodName, object[] parameters)
  8. {
  9. //指定程序集、类名 获取类
  10. Type type = Assembly.Load(AssemblyName).GetType(ClassFullName);
  11. //需要调用的方法名
  12. MethodInfo meth = type.GetMethod(MethodName);
  13. //判断是否是静态方法
  14. if (!meth.IsStatic)
  15. //由于静态类和非静态类处理
1/3