2.C#中通过委托Func消除重复代码
阅读目录
一:重复的代码
二:C#中通过委托Func消除重复代码
一:重复代码
public class Persion
{
public string Name { get; set; }
public int Age { get; set; } public Persion GetPersionInfo()
{
try
{
Persion persion = new Persion();
persion.Name = "David";
persion.Age = ; return persion;
}
catch (Exception ex)
{
return null;
}
}
}
public class Employee
{
public string Post { get; set; }
public int Salary { get; set; } public Employee GetEmployeeInfo()
{
try
{
Employee employee = new Employee();
employee.Post = "开发";
employee.Salary = ; return employee;
}
catch(Exception ex)
{
return null;
}
}
}
二:C#中通过委托Func消除重复代码
如下所示,try catch 语句只有一次了,这样就消除了GetPersionInfo方法和GetEmployeeInfo的try catch语句
public class Utillity
{
public static T TryExecute<T>(Func<T> func, string methodName)
{
try
{
return func();
}
catch (Exception ex)
{
Console.WriteLine("MethodName:" + methodName + " Error:" + ex.Message);
return default(T);
}
}
}
public class Persion
{
public string Name { get; set; }
public int Age { get; set; } public Persion GetPersionInfo()
{
return Utillity.TryExecute<Persion>(() =>
{
Persion persion = new Persion();
persion.Name = "David";
persion.Age = ; return persion;
}
, "GetPersionInfo");
}
}
public class Employee
{
public string Post { get; set; }
public int Salary { get; set; } public Employee GetEmployeeInfo()
{
return Utillity.TryExecute(() =>
{
Employee employee = new Employee();
employee.Post = "开发";
employee.Salary = ; return employee;
}
, "GetEmployeeInfo"); }
}
class Program
{
static void Main(string[] args)
{
Persion persion1 = new Persion();
Persion persion2 = persion1.GetPersionInfo(); Console.WriteLine("This persion name is {0}", persion2.Name);
Console.WriteLine("This persion age is {0}", persion2.Age); Employee employee1 = new Employee();
Employee employee2 = employee1.GetEmployeeInfo(); Console.WriteLine("This employee post is {0}", employee2.Post);
Console.WriteLine("This employee salary is {0}", employee2.Salary); Console.ReadLine();
}
}
2.C#中通过委托Func消除重复代码的更多相关文章
- 1.C#中通过委托Action消除重复代码
阅读目录 一:重复的代码 二:使用委托消除重复代码 一:重复的代码 我们在写一些方法的时候,会在里面可能出现异常的地方使用try catch语句,这样每个方法都会有try catch语 ...
- 使用#include消除重复代码
消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...
- c#中,委托Func的简单实践
c# 委托Func的简单实践最近才真正的接触委托,所以针对Func类型的委托,做一个实践练习. 首先说一些我对委托的初级理解:"就是把方法当做参数,传进委托方法里". 我平时用到的 ...
- Metalama简介2.利用Aspect在编译时进行消除重复代码
上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编 ...
- 【译】利用Lombok消除重复代码
当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西.你不是一个人!(不是骂人-)无数的开发人员花费了大量的时间来写这种样板代码,而他们本来可以利用这些时间做出更有价 ...
- Android 勤用RXJava compose操作符消除重复代码
相信小伙伴在使用RXJava与Retrofit请求网络时,都有遇到过这样的场景,在IO线程请求网络解析数据,接着返回主线程setData.更新View试图,那么也肯定熟悉下面这几句代码: .subsc ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- C#中常见的委托(Func委托、Action委托、Predicate委托)
今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通 ...
- 使用枚举类Enum作为callee和caller的约定,运用反射消除分支和重复代码在命令式程序中的应用
在开发过程中,程序提供的功能由简单变得复杂,承担功能的主要类也会因此变得庞大臃肿,如果不加以维护,就会散发出浓重的代码味道.下面这篇博文,主要讲述了利用Enum,反射等手段简化重构代码的过程. 代码涉 ...
随机推荐
- 第五天:内置对象(7.Javascript内置对象)
1)中所术是内置对象,2)中为自定义对象 代码说明如下 2.1.1 定义并创建对象实例方式1,代码如下: <!DOCTYPE html><html lang="en&quo ...
- MySQL表定义缓存
表定义 MySQL的表包含表名,表空间.索引.列.约束等信息,这些表的元数据我们暂且称为表定义信息. 对于InnoDB来说,MySQL在server层和engine层都有表定义信息.server层的表 ...
- 15 个很棒的 Bootstrap UI 界面编辑器
Bootstrap Magic BootSwatchr Bootstrap Live Editor Fancy Boot Style Bootstrap Lavish Bootstrap ThemeR ...
- 不要手动StopWatch了,让BenchmarkDotNet帮你
Nuget: https://www.nuget.org/packages/BenchmarkDotNet/ Project Site: https://github.com/PerfDotNet/B ...
- 设计模式之美:Command(命令)
索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):直接注入 Receiver 对象,Command 决定调用哪个方法. 实现方式(二):注入 Receiver 的指定方法, ...
- 爱上MVC3~MVC+ZTree大数据异步树加载
回到目录 理论部分: MVC+ZTree:指在.net MVC环境下进行开发,ZTree是一个jquery的树插件 大数据:一般我们系统中,有一些表结构属于树型的,如分类,地域,菜单,网站导航等等,而 ...
- atitit.团队建设总结o6o fix
atitit.团队建设o6o fix #----- 无限放大梦想 2 要有自己的方向...主动添加自己的东东.. 3 有几个tech site,能晓得最新的的知识.. 3 有问题多交流, 3 失败的造 ...
- iOS----友盟分享完善版本
分享 详细集成 注意:1.线上集成文档的示例代码对应的是最新版本的SDK,如果你所用的SDK版本类名或者方法名与此文档不符合,请看随包里面的线下文档或者下载使用最新版本的SDK. 设置友盟appkey ...
- C#:Oracle数据库带参PLSQL语句的正确性验证
在有Oracle数据库C#项目中,有一个这样的需求:在界面上配置了带参数的PLSQL语句,但是要通过程序验证其正确性,那么该如何实现?这就是本文要探讨的内容. 一:通过OracleCommand对象的 ...
- Factory模式
使用new的Code都违反了DIP. 但是,依赖于稳定的具体类,是无害的.例如string. 另一方面,对于正在开发中的APP,很多具体类是易变的.此时应该依赖于抽象接口. Factory模式:只依赖 ...