阅读目录
   一:重复的代码

 二: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. 1.C#中通过委托Action消除重复代码

    阅读目录 一:重复的代码  二:使用委托消除重复代码     一:重复的代码    我们在写一些方法的时候,会在里面可能出现异常的地方使用try catch语句,这样每个方法都会有try catch语 ...

  2. 使用#include消除重复代码

    消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...

  3. c#中,委托Func的简单实践

    c# 委托Func的简单实践最近才真正的接触委托,所以针对Func类型的委托,做一个实践练习. 首先说一些我对委托的初级理解:"就是把方法当做参数,传进委托方法里". 我平时用到的 ...

  4. Metalama简介2.利用Aspect在编译时进行消除重复代码

    上文介绍到Aspect是Metalama的核心概念,它本质上是一个编译时的AOP切片.下面我们就来系统说明一下Metalama中的Aspect. Metalama简介1. 不止是一个.NET跨平台的编 ...

  5. 【译】利用Lombok消除重复代码

    当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西.你不是一个人!(不是骂人-)无数的开发人员花费了大量的时间来写这种样板代码,而他们本来可以利用这些时间做出更有价 ...

  6. Android 勤用RXJava compose操作符消除重复代码

    相信小伙伴在使用RXJava与Retrofit请求网络时,都有遇到过这样的场景,在IO线程请求网络解析数据,接着返回主线程setData.更新View试图,那么也肯定熟悉下面这几句代码: .subsc ...

  7. 代码的坏味道(14)——重复代码(Duplicate Code)

    坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...

  8. C#中常见的委托(Func委托、Action委托、Predicate委托)

    今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通 ...

  9. 使用枚举类Enum作为callee和caller的约定,运用反射消除分支和重复代码在命令式程序中的应用

    在开发过程中,程序提供的功能由简单变得复杂,承担功能的主要类也会因此变得庞大臃肿,如果不加以维护,就会散发出浓重的代码味道.下面这篇博文,主要讲述了利用Enum,反射等手段简化重构代码的过程. 代码涉 ...

随机推荐

  1. WPF之 DataGrid数据绑定

    DataGrid控件是显示数据的控件,从一个对象集合获取信息并在具有行和单元格的网格中显示信息.每行和一个单独的对象相对应,并且每列和该对象中的一个属性相对应. DataGrid控件添加了许多在WPF ...

  2. mysq双主模式

    准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.131.130,MyS ...

  3. JAVA+HTML

    1.采用轻量级 JApplet . import java.awt.*; import javax.swing.JApplet; public class test extends JApplet{ ...

  4. Zabbix3.0 自动电话报障

    第一种:Pagerduty 网站:www.pagerduty.com 优点:老牌服务商,稳定 缺点:贵,英文,网站要FQ 价格参考(34美元每月才25个电话,*29每月是包年才有的价格) 安装方式: ...

  5. Omu.AwesomeMvc.dll 和Omu.ValueInjecter.dll 介绍

    AwesomeMvc 让你不写一行js实现下拉列表联动 AwesomeMvc是个开源项目,地址:http://awesome.codeplex.com/ Omu.AwesomeMvc.dll 和Omu ...

  6. Swift闭包概念与常见使用场景总结

    ·Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些 ...

  7. Centos6.7下安装配置VPN

    在Vultr上买了台VPS准备做VPN,不贵5刀,位置是日本东京的.ping值在100-200之间,还好算说的过去. Vultr地址 系统选择的Centos6 的版本是6.7 在网上查了查linux下 ...

  8. [Hyper-V]在Windows 8.1 操作系统中启用Hyper-V功能

    描述: 如何在Windows 8.1 操作中启用Hyper-V功能 实现步骤: 1,安装Hyper-V 1 打开Control Panel,点击Progress 2 点击Turn Windows fe ...

  9. 重装Eclipse、离线安装ADT、Android SDK

    由于最新的ADT.Android SDK需要最新版本的Eclipse才能使用,我无奈的只好升级Eclipse.看看自己的Eclipse已经两年没有升级了,也是时候升级了.升级前,有很多的顾虑.因为像这 ...

  10. C++ 泛型算法

    <C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛 ...