随笔分类 - C#
摘要:## 对象扩展 当使用了实体类后发现还需要添加字段,或者只是添加临时的属性,此时可以使用`IHasExtraProperties `对象扩展接口,该接口中定义了一个Dictionary属性ExtraProperties 。 ### ABP的使用 在ABP中,有三个类默认实现了`IHasExtraPr
阅读全文
摘要:## 配置设置 ABP遵循的是约定大于配置,作为约定的内容需要在应用程序中进行设置。 ### 定义设置 在设置之前需要先定义他,由于ABP是模块化的,不同模块都可以拥有自己独立的设置参数,只需要在类中派生`SettingDefinitionProvider`类 ```csharp // ABP会自动
阅读全文
摘要:上一章节有很大一部分是使用默认的CRID进行操作的,本章节将手动进行各层的编写,本次以`Student`为模块进行开发。 ## 领域层 ### 实体 在`***.Domain`项目中创建Student文件夹,并在文件夹中创建Student的实体类,该实体类继承`FullAuditedAggregat
阅读全文
摘要:## ABP Framework ### 模板运行 #### 安装并下载模板 安装ABP CLI,第一步是安装ABP CLI ```bash dotnet tool install -g Volo.Abp.Cli ``` 然后使用 `abp new` 命令在空文件夹中创建新解决方案: ```bash
阅读全文
摘要:### 获取硬盘录像机参数及摄像头信息 #### 获取硬盘录像机参数 ##### 命令参数 > NET_DVR_GET_DEVICECFG_V40 ##### 结构体 > NET_DVR_DEVICECFG_V40 ```csharp //DVR设备参数 [StructLayoutAttribute
阅读全文
摘要:## .NET Compiler Platform SDK ### .NET Compiler Platform 是什么? 通过学习该模型可以更快的了解Roslyn,或者说更快的了解c#编译器的相关知识。 ### 编译器管道 #### 编译器管道是什么  `bool CHCNetSDK.NET_DVR_Init()` 初始化海康组件 返回值: true:初始化成功 false:失败,失败原因: 1. 海康SDK分32位和64位,项目中目标平台一定要与SDK一致(项目右键->属性->生成-
阅读全文
摘要:#### 主动获取 类似于获取门禁记录,通过代入的查询条件获取范围内的记录信息,使用该方式时需要注意时间范围不要重复或者获取数据后有查重操作,否则会出现重复的情况。 > 流程中的1,2,6,7的代码请参见《获取门禁记录方式-公用方法》 ##### 流程 1. `NET_DVR_Init`(初始化)
阅读全文
摘要:### 获取配置信息 非门禁和报警主机产品,可通过该文章来获取和设置相关用户的密码,而门禁和报警主机无法使用,码错误会报17。 #### 非报警主机和门禁获取配置信息 ##### 方法及参数 1. 调用方法:`NET_DVR_GetDVRConfig(userId, 4181, 0, ptrDevU
阅读全文
摘要:### 门禁/报警主机获取用户信息 #### 方法及参数 1. 调用方法:`NET_DVR_GetAlarmDeviceUser(userId, 1, ref NET_DVR_ALARM_DEVICE_USER);` ``` //HCNetSDK中声明类 [DllImport(@"..\..\run
阅读全文
摘要:### 出错场景 在调试海康SDK时,将struct类型的实例压入内存时,提示了改错误信息,具体代码如下: ``` CHCNetSDK.NET_DVR_ALARM_DEVICE_USER alarmDeviceUser = new CHCNetSDK.NET_DVR_ALARM_DEVICE_USE
阅读全文
摘要:### 调用外部dll来实现组件化 #### 场景 1. 有一个设备管理控制系统,主要作用是控制设备及收集相关设备的信息,目前只集成了门禁和监控,后期期望添加更多设备时,一般都是在公司编写完后现场实施并调试,代码一般也是每个设备创建独立的项目,供总项目调用;慢慢的可能会演变出所有设备都继承一个公共的
阅读全文
摘要:概述 微软推出的跨平台Web服务器,目前Asp.NET项目都支持Kestrel,而且是默认启用的。那可能有人会问,哪里用到了,答案就是这句代码: WebApplication.CreateBuilder(args); //调用Kestrel Kestrel利用KestrelEngine(网络引擎)实
阅读全文
摘要:AccessReverser.GetAccess 获得相关类的访问级别 AccessReverser.GetAccess() 可以是泛型 AccessReverser.GetAccess方法中的参数可以是 | 属性名称 | 说明 | | | | | PropertyInfo | 获取属性的访问级别
阅读全文
摘要:用于执行高性能的I/O,且代码不复杂 依赖库:System.IO.Pipelines 创建 var pipe = new Pipe(); PipeReader reader = pipe.Reader; PipeWriter writer = pipe.Writer; 基本用法 // 对于socke
阅读全文
摘要:NDelegate Action/Func 委托 NClass的委托 // NClass使用委托调用方法 var nClass = NClass.DefaultDomain(); nClass .Public() .Namespace("Test") .PublicField<string>("Na
阅读全文
摘要:FakeMethodOperator 将以后的方法进行快速克隆,克隆时只会覆盖重新声明的信息,例如原来是public类型,不做定义的话,就直接拿过来使用。 好处:写好的模板不需要大变,变动的地方又代码进行修改 注意:使用Compile方法进行编译,参数为带入的参数,可通过调用.Compile().G
阅读全文
摘要:模板类的使用,便于快速生成相关的class类,感觉是基础单元(AssemblyCSharpBuilder)的封装 | 类名 | 作用 | 命名空间 | 操作类型 | | | | | | | NAssembly | 快速创建同程序集的 oop 及委托等操作类 | 全局 | 静态初始化,动态实例化 |
阅读全文
摘要:AssemblyCSharpBuilder 最基本编译单元,涵盖了编译流程所需的基本功能,包括创建域,加载dll文件,创建各种类,输出路径更换,调用特定域中的方法等。 Natasha有两种方式编译流程,一种就是AssemblyCSharpBuilder ,相比较而言,它是轻量级的,个人怀疑另一种编译
阅读全文