关闭
当前搜索:

生成代码,从 <T> 到 <T1, T2, Tn> —— 自动生成多个类型的泛型

当你想写一个泛型 的类型的时候,是否想过两个泛型参数、三个泛型参数、四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代码的手段很多,本文采用最笨的方式生成,但效果也很明显——代码写得轻松写得爽! 我们想要的效果 我们现在有一个泛型的版本: public class Demo { pu...
阅读(44) 评论(0)

在操作系统重启后恢复应用程序的工作状态

Windows 10 创意者更新之后,默认开启了重启后恢复应用程序状态的功能。这是自 Vista 以来就提供的功能——Restart Manager。 应用程序实现这一功能只需要调用 RegisterApplicationRestart 即可。传入两个参数: 重启后使用的命令行参数(例如当前正在打开的文件,以及正在阅读或编辑的位置) 决定是否进行重启的限制标记(任何时候都能重启还是在某些...
阅读(75) 评论(0)

让一个 csproj 项目指定多个开发框架

可移植类库、共享项目、.NET Standard 项目都能够帮我们完成跨多个 .NET SDK 的单一项目开发,但它们的跨 SDK 开发都有些限制。现在,我们又有新的方式能够跨多个 .NET SDK 开发了,这就是使用新的 csproj 文件格式。 看看拥有多个开发框架的项目长什么样吧! ▲ 多 SDK 项目 是不是很激动? 新 csproj 文件 在 如何组织一个同时面...
阅读(64) 评论(0)

再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录

我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。 阅读本文将了解使用 git worktree 高效进行并行开发的方法。 git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发。 快速上手 git...
阅读(52) 评论(0)

推荐近乎免费的调试神器——OzCode

当一只断点打在 Visual Studio 的代码编辑器中,程序命中断点的那一刻,调试才刚刚开始……这个时候忙碌的手在键盘和鼠标之间来回跳跃,试图抓住每一次单步执行带来的状态改变。 如果命中断点的那一刻多数我需要的状态都自动呈现,偶尔需要的状态能够快速定位,那该多好!于是,有了 OzCode…… — OzCode 的官网在这里:[OzCode: Innovative debugging ex...
阅读(60) 评论(0)

.NET Core 和 .NET Framework 中的 MEF2

MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2。 等等!3 去哪儿了?本文将教大家完成基于 MEF2 的开发。 MEF 和 MEF2 其实微软发布了四个版本的 MEF: 随着 .NET Framework 4.0 发布,微软称之为 MEF 随着 .NET Framework 4.5 发布,微软让它...
阅读(67) 评论(0)

将 WPF、UWP 以及其他各种类型的旧样式的 csproj 文件迁移成新样式的 csproj 文件

写过 .NET Standard 类库或者 .NET Core 程序的你一定非常喜欢微软为他们新开发的项目文件(对于 C#,则是 csproj 文件)。这种文件非常简洁,组织一个庞大的项目也只需要聊聊二三十行;也非常易读,你可以轻易地修改其代码而不用经过过多的提前学习。当然,微软曾经尝试过用 project.json 来组织项目文件,不过只有短短的预览版阶段用过,此后就废弃了。 然而组织传统 ....
阅读(62) 评论(0)

.NET 中的轻量级线程安全

对线程安全有要求的代码中,通常会使用锁(lock)。自 .NET 诞生以来就有锁,然而从 .NET Framework 4.0 开始,又诞生了 6 个轻量级的线程安全方案:SpinLock, SpinWait, CountdownEvent, SemaphoreSlim, ManualResetEventSlim, Barrier。 SpinLock, SpinWait SpinLoc...
阅读(52) 评论(0)

卡诺模型(KANO Model)

卡诺模型是一种研究影响顾客满意度因素的方法,在软件工程中可以用来辅助做需求分析和优化产品的质量。 作为一种方法,卡诺模型将某一种特性的存在程度作为横坐标,越大表示某个功能或特性做得越多,越小则表示做得越少。而纵坐标是用户满意度/认可程度,越高表示用户越喜欢,越低表示用户越讨厌此特性。 于是,卡诺模型为不同的特性分成五个类别: 魅力特性:如果产品没有此特性,用户并不关心;而产品拥有此...
阅读(62) 评论(0)

C#/.NET 匿名函数会捕获变量,并延长对象的生命周期

小伙伴在一次垃圾回收中,发现对象并没有被回收掉,而注释掉一句代码后它便能够回收。 这究竟是为什么? 不关心探索过程的就直接拉到最后看结论吧! 探索 测试代码是这样的: private void OnLoaded(object sender, RoutedEventArgs e) { var variable = new MainPage(); var re...
阅读(56) 评论(0)

迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference)

在我之前的一篇博客 NullReferenceException,就不应该存在! 中,我吐槽了 C# 中 null 的弊端以及避免 null 的方法;事实上这本都是现代高级语言中极力推崇的做法。Kotlin 和 Swift 自诞生之日起引用类型就不能为空,C# 背着历史的包袱直到 8.0 才开始这么做…… 安装可空引用类型预览包 现在 C#8.0 还没有发布,但微软已经提供了预览的扩展...
阅读(74) 评论(0)

异步任务中的重新进入(Reentrancy)

一个按钮,点击执行一个任务。我们可能直接在它的 Click 事件中写下了执行任务的代码。一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效;一旦进入了异步世界,这便是无尽的 BUG!...
阅读(79) 评论(0)

WPF 自定义键盘焦点样式(FocusVisualStyle)

WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌。这时,其自带的键盘焦点样式(FocusVisualStyle)就非常不搭了,改改会舒服得多。比如,改成 UWP 的样式。本文将展示 WPF 自定义键盘焦点样式自定义的坑!...
阅读(128) 评论(0)

C#/.NET 中的契约

将文档放到代码里面,文档才会及时地更新! 微软从 .NET Framework 4.0 开始,增加了 System.Diagnostics.Contracts 命名空间,用来把契约文档融入代码。然而后面一直不冷不热,Visual Studio 都没天然支持。ReSharper 不知何时加入了 ReSharper Annotations,在 ReSharper 插件工作的情况下能够进行静态契约的验证。...
阅读(89) 评论(0)

实现一个 WPF 版本的 ConnectedAnimation

Windows 10 的创造者更新为开发者们带来了 Connected Animation 连接动画,这也是 Fluent Design System 的一部分。它的视觉引导性很强,用户能够在它的帮助下迅速定位操作的对象。不过,这是 UWP,而且还是 Windows 10 Creator’s Update 中才带来的特性,WPF 当然没有。于是,我自己写了一个“简易版本”。...
阅读(159) 评论(0)
50条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:22556次
    • 积分:737
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:0篇
    • 译文:0篇
    • 评论:13条
    文章分类