在进行项目的开发的过程中, if 语句是少不了的,但我们始终要有一颗消灭 if / else 语句的心。为了消灭if / else 我们引入了 短路器 的概念。短路器 有时候的确能精简我们的代码,但还不够,因此我参考了一个方法来继续消灭一部分 断路器 中的 if 语句。接下来就让我们拿一段事例代码来一步一步的演示下吧。

如下一段比较典型if 断路器 代码:

if (someConditionIsMet)
{throw new SomeSpecificException("message");
}
//someConditionMetCode

这里代码虽然没什么问题,但是我个人还是不喜欢用 if 的语句声明。我更喜欢的是:

Assert.That(someConditionIsMet, "message");

但是这样子的话我们就无法指定 Exception 的类型了,因此我们可能需要的是下面这样子的:

Assert.That<MyException>(someConditionIsMet, "message");

但是基类Exception虽然具有无参数的构造函数,但是在创建异常之后,不允许我再给 Message 进行赋值了。因为,Message是Exception 类中的只读属性。

public virtual string Message { get; }

我的解决方案是使用Activator.CreateInstance并传入要实例化的特定异常类型以及异常消息。如下代码所示:

public static class Assert
{public static void That<T>(bool condition, string msg) where T : Exception, new(){if (condition){var ex = Activator.CreateInstance(typeof(T), new object[] { msg }) as T;throw ex;}}
}

至此,结束。开头的那段代码就可以通过变通的方式把 if 语句给移除了,显得代码更精简,你觉得呢?当然,如果你有更好的处理方式也可以留言告诉我。

参考自:https://www.codeproject.com/Tips/5289739/Assert-with-assertion


http://www.taodudu.cc/news/show-910010.html

相关文章:

  • Swagger在header中添加token
  • 2020年中国.NET开发者大会第二天 WorkShop
  • OrchardCore实现模块化核心原理分析
  • .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记
  • .NET Conf 2020 - 基于ASP.NET Core构建可热插拔的插件化系统
  • 多款主流编程语言,哪款开发软件最安全?
  • 【对比学习】koa.js、Gin与asp.net core——中间件
  • 2020年终回顾:时间会回答成长,成长会回答梦想
  • 明天面腾讯,我刷了这71道面试题...
  • 面试官:. NET5源码里用到了哪些设计模式?懵!
  • C# 中 ConcurrentDictionary 一定线程安全吗?
  • 2020 .NET 开发者峰会顺利在苏州落幕,相关数据很喜人以及线上直播回看汇总
  • .NET 云原生架构师训练营(模块二 基础巩固 REST RESTful)--学习笔记
  • 为 CefSharp 应用内置 C++ 运行环境并启用 AnyCPU 支持
  • 如何在 ASP.NET Core 中使用 Route 特性
  • Beetlex之tcp/tls服务压测工具
  • 【Azure Show】|第九期 “我的计算机入门之路” 嘉宾秦婷婷汪宇杰文轩
  • Abp vNext 后台作业hangfire
  • 如何在 C# 中使用 委托
  • 调试实战 | 通过转储文件分析程序无响应之使用 windbg + IDA 逆向篇
  • 跟我一起学Redis之高可用从主从复制开始
  • 【.Net core】EFCore——Code First生成数据库与表
  • 龙芯.NET正式发布 开源共享与开发者共成长
  • 划入 .NET 6版本目标,微软鼓励开发人员信任第三方库
  • 新鲜高频笔面试题分享,Redis、MongoDB、ElasticSearch...
  • 在 Windows 服务中托管 ASP.NET Core
  • 目录 | 数据结构与剑指Offer系列推文合集
  • Abp vNext异常处理的缺陷/改造方案
  • 开源项目葫芦藤:IdentityServer4的实现及其运用
  • Dotnet Core多版本API共存的优雅实现

一个小技巧助您减少if语句的状态判断相关推荐

  1. Oracle中删除数据的一个小技巧

    在我带的某个Project中,在开发阶段需要Reload相同的Data到Oracle中来进行测试,因此需要不断的删除数据,简单的Delete操作似乎就OK了,但其实不然.我们到知道建表的时候需要Tab ...

  2. 短视频剪辑如何正确把握“节奏感”,三个小技巧助你快慢有序

    短视频剪辑如何正确把握"节奏感",三个小技巧助你快慢有序 在剪辑短视频的时候,节奏感是非常重要的一个部分,如果短视频剪辑得有节奏感,就可以让整个短视频看起来快慢有序,很是舒适.尤其 ...

  3. 自媒体创作审核不通过怎么办?教你一个小技巧,提高效率

    自媒体人是不是会遇到平台审核内容不通过的时候,遇到这个问题你是怎么解决的呢?是不是修改内容提交还是不通过?今天,教你一个小技巧,快速解决内容审核不通过的问题,提高发稿效率!很多自媒体新手不知道稿件还能 ...

  4. 三星s6老显示无服务器,三星手机最常见的故障和修复小技巧助你解决难题

    三星手机最常见的故障和修复小技巧助你解决难题 三星的Galaxy系列手机是市场上最好的设备之一.就像所有高端移动技术一样,随着软件和硬件的老化,你最终会遇到某种问题.本指南将向您介绍如何解决三星Gal ...

  5. Get一个小技巧——我猜你应该不知道

    最近在vue项目中学到的一个小技巧,今天分享给大家: 一般我们的项目都会用到国际化,那在国际化的语句中如果有变量,我们该什么处理呢? 有的同学可能会把这个分成两段,比如: // 多语言文件ZH.js中 ...

  6. python中template是什么意思啊_Python中Template使用的一个小技巧

    Python中Template是string中的一个类,可以将字符串的格式固定下来,重复利用. from string import Template s = Template("there ...

  7. 配音是怎么制作出来的,想做出让人惊艳的配音,只需一个小技巧

    配音是怎么制作出来的,想做出让人惊艳的配音,只需一个小技巧 配音,除了是一部分赖以为生的技能之外,也是很多小伙伴打发时间的娱乐方式.专业的配音演员可以让影视剧.动漫的内容拥有灵魂,也可以通过阅读有声书 ...

  8. 短视频的地方搞笑配音怎么做?分享一个小技巧,不会方言也能配

    短视频的地方搞笑配音怎么做?分享一个小技巧,不会方言也能配 各位小伙伴在刷短视频的时候,相信也经常会看到一些有趣的地方搞笑配音短视频,有趣的画面配上独具一格的地方方言,着实很轻易就可以让人哈哈大笑.那 ...

  9. 有没有测试女生暗恋的软件,教你一个小技巧就可以测试女生是否喜欢你!

    原标题:教你一个小技巧就可以测试女生是否喜欢你! 有个兄弟好不容易认识一个女孩,通过不懈努力,终于把她约出来.但是在约会过程当中不知道和女孩干什么,不知道什么时候可以干什么. 看着自己喜欢的女孩坐在自 ...

最新文章

  1. SqlServer2008查询性能优化_第一章
  2. Excel访问局域网中OLAP方案
  3. 台式计算机无线设置,台式电脑怎么设置无线网络?
  4. semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
  5. 开发日记-20190609 关键词 记录一次失败,感悟,畅想未来
  6. Linux每次开机都要source /etc/profile的解决方法
  7. Android构建流程——篇六
  8. TypeScript 之泛型
  9. 用C#调用Windows API向指定窗口发送按键消息(转载)
  10. SQL SERVER 2008筛选时报错 无法为该请求检索数据
  11. C语言刷题训练营-第一讲
  12. 计算机高配方案,电脑主机i5 9400F升10400/GTX1660Super高配吃鸡方案推荐
  13. 点云 3D 目标跟踪 - AB3DMOT(IROS 2020, ECCVW 2020)
  14. VR全景展示是什么,VR全景展示的功能有哪些?
  15. php sid打印不出来,pinpoint php 使用不当引发棘手的问题 --psid sid tid pname ptype ah
  16. Compose 类型稳定性注解:@Stable @Immutable
  17. 计算机应用基础答案2010,计算机基础(Excel2010)试题及答案
  18. property_get/property_set函数使用
  19. Linux 知:map文件
  20. Node 本地网站服务器网页加载不出图片的解决方法

热门文章

  1. 高精度(压位+判负数+加减乘+读写)
  2. lua windows下编译
  3. 【IntelliJ】IntelliJ IDEA常用设置及快捷键以及自定义Live templates
  4. Android深度探索(卷1)HAL与驱动开发第六章总结
  5. Fiddler进行模拟Post提交json数据,总为null解决方式
  6. ios12彻底关闭siri_Siri正在iOS 12中获取自定义语音操作
  7. echo和@echo_如何在Echo Show和Echo Spot上切换到24小时时钟
  8. Zabbix server is not running
  9. maven,gradle本地缓存位置
  10. 阿里云如何实现海量短视频的极速分发?答案在这里!