- 博客(180)
- 收藏
- 关注
转载 .Net 程序在自定义位置查找托管/非托管 dll 的几种方法
一、自定义托管 dll 程序集的查找位置目前(.Net4.7)能用的有2种:#define DEFAULT_IMPLEMENT//#define DEFAULT_IMPLEMENT2//#define HACK_UPDATECONTEXTPROPERTYnamespace X.Utility{ using System; using S...
2019-09-09 16:10:00
328
转载 .net 生成非托管代码
最近在一个老外的程序中看到一段代码,其中使用了System.Runtime.InteropServices.MarshalAs方法进行托管代码与非托管代码之间封装数据,感觉很新颖。特意记录下来,供大家参考[DllExport("ExpTest", CallingConvention = CallingConvention.Winapi)][return: MarshalAs(...
2019-09-09 15:52:00
330
转载 GridControl单元格编辑验证的方法
本文实例演示了DevExpress实现GridControl单元格编辑验证的方法,比较实用的功能,具体方法如下:主要功能代码如下:/// <summary>/// 自定义单元格验证/// </summary>/// <param name="view">GridView</param>/// <param ...
2019-09-08 19:13:00
499
转载 扩展方法实现DevExpress控件校验
DevExpress控件中,如果要控件的值进行校验,需要用到DXValidationProvider控件和DXErrorProvider控件,按照正常思路,无论使用哪个控件要实现校验效果时都需要对每个要校验的控件进行校验规则绑定,在这,写一个扩展方法实现一劳永逸的效果。扩展代码如下: using System; using System.Collections...
2019-09-08 19:05:00
564
转载 用扩展方法实现DevExpress-GridControl级联效果
首先,让我们先回顾下.Net中扩展方法的特征:1、 必须在一个非嵌套、非泛型的静态类中;2、 至少有一个参数(this 作前缀的参数);3、 第一个参数必须附加this做前缀;4、 第一个参数不能加任何修饰符(如out或ref);5、 第一个参数的类型不能是指针类型。在DevExpress控件中GridControl是非常常用的控件之一,有时后...
2019-09-08 19:01:00
375
转载 C# 历遍对象属性
今天有个网友问如何历遍对象的所有公共属性,并且生成XML。采用序列化方式的话比较简单,我写个手工解析的例子,这样能让初学者更加理解也比较灵活,记录一下吧或许会有人用到。对象模型: public class Master { public string Description { get; set; } public List...
2019-09-07 11:53:00
183
转载 DataTable List 相互转换
This uses the FastMember's meta-programming API for maximum performance. If you want to restrict it to particular members (or enforce the order), then you can do that too:IEnumerable<SomeTyp...
2018-03-11 17:44:00
101
转载 .NET Core 中的并发编程
今天我们购买的每台电脑都有一个多核心的 CPU,允许它并行执行多个指令。操作系统通过将进程调度到不同的内核来发挥这个结构的优点。 然而,还可以通过异步 I/O 操作和并行处理来帮助我们提高单个应用程序的性能。 在.NET Core中,任务 (tasks) 是并发编程的主要抽象表述,但还有其他支撑类可以使我们的工作更容易。并发编程 - 异步 vs. 多线程代码并行编程是一个广泛的术...
2018-03-11 17:16:00
579
转载 为什么选择 .NET Core?
为什么选择.NETCore?学习新的开发框架是一项巨大的投资。您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序。作为开发人员,有许多框架可供选择,很难知道什么是最适合的。即使您正在使用.NET开发软件,.NET Core也不相同,您需要花时间学习使用它的工具和技术。为了理解为什么.NET Core值得一看,这有助于知道你从哪里开始。.NETCore的...
2018-03-07 17:59:00
126
转载 .NET 切面编程 PostSharp
目录概念实现方式.Net平台的切面实现PostSharp示例概念Aspect-Oriented Programming(AOP):想想OOP是不是有些熟悉,AOP翻译过来的意思就是面向切面编程。先来关注一下涉及到的以下几个概念点。横切关注点: 存在于项目的绝大多数业务中可以通用的一些辅助性的功能。例如日志、安全、持久化等模块。它们存在于核心业务...
2018-03-03 21:08:00
155
转载 深入探索.NET内部了解CLR如何创建运行时对象
前言SystemDomain, SharedDomain, and DefaultDomain。对象布局和内存细节。方法表布局。方法分派(Method dispatching)。因为公共语言运行时(CLR)即将成为在Windows上创建应用程序的主角级基础架构, 多掌握点关于CLR的深度认识会帮助你构建高效的, 工业级健壮的应用程序. 在这篇文章中, 我们会浏...
2018-03-01 21:35:00
179
转载 C# RabbitMQ
1.引言RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现,其内部结构如下:RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息...
2018-02-09 21:32:00
146
转载 使用 MQTTnet 快速实现 MQTT 通信
1 什么是 MQTT ?MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分。MQTT 是基于二进制消息的发布/订阅编程模式的消息协议,如今已经成为 OASIS 规范,由于规范很简单,非常适合需要低功耗和网络带宽有限的 IoT 场景。MQTT官网2 MQTTn...
2018-01-21 21:02:00
383
转载 DotNetty 跨平台的网络通信库
长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架。终于微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使用时,完全可以依照Netty官方的教程来学习和使用DotNetty应用程序。DotNetty同时也是开源的,它的源代码托管在Github...
2018-01-17 21:45:00
221
转载 .NET Socket 简单入门
说到Socket,想必大家都或多或少有所涉及,从最初的计算机网络课程,讲述了tcp协议,而Socket就是对协议的进一步封装,使我们开发人员能够更加容易轻松的进行软件之间的通信。这个星期刚好接受一个共享车位锁的项目,需要使用Socket与硬件进行通信控制,说白了也就是给锁发送指令,控制其打开或者关闭,再就是对App开放操作接口,使其方便测试以及用户的使用。这其中核心就是Socket的...
2018-01-03 21:18:00
417
转载 async & await 的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了。但是这也给我们编程埋下了一些隐患,有时候可能会产生一些我们自己都不知道怎么产生的Bug,特别是如果连线程基础没有理解的情况下,更不知道如何去处理了。那今天我们就来好好看看这两兄弟和他们的叔叔(Task)爷爷(Thread...
2017-11-11 20:56:00
100
转载 C# 委托和事件高级进阶
本篇文章主要采用理论和代码实例相结合方式来论述委托和事件,涉及到一些边界技术,如软件架构的OCP原则(开-闭原则),软件架构解耦,设计模式(Sender-Order)和事件驱动模型,有一定难度和深度,不适合初级者。第一部份 委托关于委托内容,主要围绕下图来论述。一 委托是什么(what)(一)委托产生的背景之一1.我们先来假设这样一个情景需求:...
2017-10-29 17:51:00
333
转载 C# 事件总线 EventBus
1. 引言事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉。事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。我们来看看事件总线的处理流程:了解了事件总线的基本概念和处理流程,下面我们就来分析下如何去实现事件总线。2.回归本质在动手实现事件总线之...
2017-10-06 21:51:00
1200
转载 C#开发移动应用 - 环境搭建
前言其实从2013开始就想用Xamarin,奈何 当初收费一座大山压在身上 完全无法见得庐山真面目后面2015,微软收购Xamarin,没过多久就宣布对个人用户免费..那个兴奋劲就别提了..兴奋的我电脑都重装了好几遍...(因为装Xamarin搞的各种冲突)..奈何..资源有限 国内没镜像 FQ没路子.. 吃饭没钱..咳,暴露了然后VS2017终于来了,首先 国内有镜像了...
2017-09-21 21:48:00
171
转载 C#中的多线程超时处理实践
最近我正在处理C#中关于timeout行为的一些bug。解决方案非常有意思,所以我在这里分享给广大博友们。我要处理的是下面这些情况:我们做了一个应用程序,程序中有这么一个模块,它的功能向用户显示一个消息对话框,15秒后再自动关闭该对话框。但是,如果用户手动关闭对话框,则在timeout时我们无需做任何处理。程序中有一个漫长的执行操作。如果该操作持续5秒...
2017-09-05 17:14:00
534
转载 .NET 异步多线程,Thread,ThreadPool,Task,Parallel
今天记录一下异步多线程的进阶历史,以及简单的使用方法主要还是以Task,Parallel为主,毕竟用的比较多的现在就是这些了,再往前去的,除非是老项目,不然真的应该是挺少了,大概有个概念,就当了解一下进化史了1:委托异步多线程,所有的异步都是基于委托来实现的#region 委托异步多线程{ //委托异步多线程 Stopwatch watch = new...
2017-08-24 17:54:00
194
转载 C# 开发人员的函数式编程
摘要:作为一名 C# 开发人员,您可能已经在编写一些函数式代码而没有意识到这一点。本文将介绍一些您已经在C#中使用的函数方法,以及 C# 7 中对函数式编程的一些改进。 尽管 .NET 框架的函数式编程语言是F#,同时,C# 是一个面向对象的语言,但它也有很多可以用于函数式编程技术的特性。你可能已经写了一些功能的代码而没有意识到它!函数式编程范例函数式编程是相对于目前比较流行和通...
2017-08-02 18:01:00
109
转载 C# 7.0 本地方法
VS 2017 的 C# 7.0 中引入了本地方法,本地方法是一种语法糖,允许我们在方法内定义本地方法。更加类似于函数式语言,但是,本质上还是基于面向对象实现的。1. 本地方法先看一个示例: 1 using static System.Console; 2 3 namespace UseLocalFunctions 4 { 5 class P...
2017-07-11 21:14:00
409
转载 条形码生成库 BarcodeLib
官方介绍在ASP.NET,Windows,Reporting Service,Crystal Reports 和 RDLC Reports应用程序中轻松生成条形码生成准确的条形码图像,并可以保存为 C# 和 VB.NET 类中的 JPEG,GIF 或 PNG 图像文件兼容 C# 和 VB.NET由 .NET 程序员广泛使用符合最新的条形码符号体系标准,如 ISO ...
2017-06-12 21:59:00
921
转载 FastReport.Net 无限页高(连续纸小票)
using System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Windows.Forms;using System.Drawing;using System.Data;using FastRepo...
2017-06-06 15:56:00
819
转载 让VS2013支持 C# 6.0 语法
还未升级使用VS2015前,又想尝试使用C# 6.0的语言特性,可以用以下方法启用:VS2013中“工具”下选择“程序包管理器控制台”:选中需要使用C# 6.0的项目,再敲入"Install-Package Microsoft.Net.Compilers"命令:PM> Install-Package Microsoft.Net.Compilers正在...
2017-06-05 19:04:00
203
转载 FastReport.net 常用方法
一、页面设置 情景:FastReport设计器页面默认设置为A4纸,但如果需要显示的字段过多,这时就出现了页面的大小无法满足完整显示所需内容的问题。 解决:出现这个问题后,我们可以在来到"文件"—"页面设置"选项中进行设置,在这里可以直接调整页面的纸张类型和尺寸,但是我使用的时候更多的会调整Portrait为Landscape,所谓Portrait按词霸的翻译就是“纸短的一边...
2017-06-05 17:58:00
294
转载 C# 单元测试,带你快速入门
注:本文示例环境VS2017XUnit 2.2.0 单元测试框架xunit.runner.visualstudio 2.2.0 测试运行工具Moq 4.7.10 模拟框架为什么要编写单元测试对于为什么要编写单元测试,我想每个人都有着自己的理由。对于我个人来说,主要是为了方便修改(bug修复)而不引入新的问题。可以放心大胆的重构,我认为重构觉得是提高代码质量...
2017-05-25 10:41:00
120
转载 C# 压缩组件介绍与入门
1.前言作为吉日嘎拉权限管理系统最早的一批学习版用户,学了不少东西,在群里面也结识了很多朋友,更重要的是闲余时间,大家都发布很多可靠的外包工作。这次也是由于吉日嘎拉发布了一个有关“压缩文件损坏检测”的外包任务,最早在2009年用C#很简单的使用过压缩组件,这次有了这个需求,才所以才深入研究一番,顺便有了这篇博客。在日常项目开发过程中,操作Zip或者RAR压缩文件也是...
2017-05-21 10:38:00
183
转载 《Effective C#》快速笔记(六)- - C# 高效编程要点补充
目录四十五、尽量减少装箱拆箱四十六、为应用程序创建专门的异常类四十七、使用强异常安全保证四十八、尽量使用安全的代码四十九、实现与 CLS 兼容的程序集五十、实现小尺寸、高内聚的程序集 这是该系列的最后一篇。也许有些理论有可能会过时,我想它仍有存在的必要,人的知识水平也是一个不断成长的过程,学...
2017-05-12 10:48:00
103
转载 《Effective C#》快速笔记(五)- - C# 中的动态编程
静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作。C# 是一种静态类型的语言,不过它加入了动态类型的语言特性,可以更高效地解决问题。 一、目录三十八、理解动态类型的优劣三十九、使用动态类型表达泛型类型参数的运行时类型四十、将接受匿名类型的参数声明为 dynamic四十一、用 Dyn...
2017-05-11 10:47:00
94
转载 《Effective C#》快速笔记(四)- 使用框架
.NET 是一个类库,你了解的越多,自己需要编写的代码就越少。目录三十、使用重写而不是事件处理函数三十一、使用 IComparable<T> 和 IComparer<T> 实现顺序关系三十二、避免使用 ICloneable 接口三十三、仅用 new 修饰符处理基类更新三十四、避免重载基类中定义的方法三十五、PLI...
2017-05-08 10:46:00
107
转载 《Effective C#》快速笔记(三)- 使用 C# 表达设计
目录二十一、限制类型的可见性二十二、通过定义并实现接口替代继承二十三、理解接口方法和虚方法的区别二十四、用委托实现回调二十五、用事件模式实现通知二十六、避免返回对内部类对象的引用二十七、让类型支持序列化二十八、提供组粒度的因特网服务 API二十九、支持泛型协变和逆变二十一、限制类型的可见性 1.在保证类型可以完成工作...
2017-05-05 10:46:00
91
转载 《Effective C#》快速笔记(二)- .NET 资源托管
简介 续《Effective C#》读书笔记(一)- C# 语言习惯。 .NET 中,GC 会帮助我们管理内存,我们并不需要去担心内存泄漏,资源分配和指针初始化等问题。不过,它也并非万能,因为非托管资源需要我们自己进行清理,如文件句柄、数据库连接、GDI+ 对象和COM 对象等。目录十二、推荐使用成员初始化器而不是赋值语句十三、正确地初始化静...
2017-05-03 10:45:00
80
转载 《Effective C#》快速笔记(一)- C# 语言习惯
目录一、使用属性而不是可访问的数据成员二、使用运行时常量(readonly)而不是编译时常量(const)三、推荐使用 is 或 as 操作符而不是强制类型转换四、使用 Conditional 特性而不是 #if 条件编译五、为类型提供 ToString() 方法六、理解几个等同性判断之间的关系七、理解 GetHashCode() 的陷阱...
2017-05-02 10:44:00
91
转载 Visual Studio 数据库架构比较
一、前言开发的时候在测试服务器上和线网服务器上面都有我们的数据库,当我们在线网上面修改或者新增一些字段后,线网的数据库也需要更新,这个时候根据表的修改记录,然后在线网上面一个一个增加修改很浪费效率而且容易出错,那有没有更好的方法解决这个问题呢?有!那就是VS自带的架构比较功能。个人觉得在初期一个开发除了掌握必要的开发知识外,对开发工具的使用和了解程度同样是至关重要的。就想对...
2017-04-28 20:59:00
317
转载 C# 反射与dynamic最佳组合
在 C# 中反射技术应用广泛,至于什么是反射.........你如果不了解的话,请看下段说明,否则请跳过下段。广告一下:喜欢我文章的朋友请关注一下我的blog,这也有助于提高本人写作的动力。反射:当你背对一个美女或帅哥却不能回头仔细观察研究时(纯属虚构,如有巧合、纯属雷同),一面小镜子就能满足你的需求。在 C# 编程过程中也经常遇到类似的情况:有一个别人写的 dll 类库你想使用却没...
2017-04-22 21:10:00
190
转载 C# 调用WebApi
1.WebRequest方式Post:private void button1_Click(object sender, EventArgs e) { string ss= HttpPost("http://localhost:41558/api/Demo/PostXXX", "{Code:\"test089\",Name:\"tes...
2017-04-19 11:08:00
159
转载 基于微软开发平台构建和使用私有NuGet托管库
本篇blog包含使用TFS2017,VS2017等平台和工具搭建和使用NuGet库等基本过程,为团体提供更加自动化和高效的研发活动支持。作为以产品线或者以专属业务为扩展的项目类型的软件研发团体,都会有自己的基础软件框架和功能模块的软件产品智力资产库。团队无形智力资产的积累和最大化使用,不仅是组织的软件成熟度能力的体现,更是软件企业或团体研发成本和经济效益的最大化平衡的有效手段。...
2017-03-22 11:12:00
203
转载 使用Topshelf组件构建简单的Windows服务
很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了。我个人觉得无论学习什么,都应该尝试着去了解对应的原理和源码(这里就不要急着吐槽,容我说完)。对底层的了解不是为了让你写出类似的东西,让你写也不可能写的出来,重写一个就需要以此修改整个底层结构,了解底层知识只是为了让你可以在...
2017-03-07 11:10:00
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人