ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

.NET高级语法:委托(switch,错误处理,缓存处理,数据库调用处理),linq to object

2022-06-23 23:36:15  阅读:193  来源: 互联网

标签:WriteLine object linq static student Action 错误处理 public



1.委托
2.linq
3.linq to sql
4.AOP封装-委托嵌套

委托封装:能把一个方法包装成一个变量,然后传递,所以用委托来完成逻辑拆分
把固定的固定,只关注通用逻辑,完成固定,把可变的提出交给调用者指定,更稳定,这就是代码封装

 

 


应用场景:

switch case
1.student.SayHi("李恒", Student.PeopleType.Chinese)
Action<string> action = new Action<string>(s => Console.WriteLine($"早上好,{s}"));
student.SayHiAdvanced("李恒", s => Console.WriteLine($"早上好,{s}"));

public void SayHiAdvanced(string name,Action<string> sayHiByCountry)
{
console.WriteLine("prepare say hi");
sayHiByCountry.Invoke(name);
console.WriteLine("after say hi");
}
通用缓存读取

2.错误处理:
//new Action(() =>

//student.SayHi("李恒", Student.PeopleType.Chinese)

//).SafeInvoke();

/// <summary>
/// 提供安全调用,抓取任何异常,打印日志
/// </summary>
/// <param name="act"></param>
public static void SafeInvoke(this Action act)
{
try
{
act.Invoke();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}


3. 缓存处理
public static object ShowCache()
{

string key = "ShowCache-1123";
if (DelegateExtend.Exist(key))
{
return DelegateExtend.Get(key);
}
else
{
Thread.Sleep(1000);
object oValue = "ssdqdhadshaksfhkasf";
DelegateExtend.Add(key, oValue);
return oValue;
}
}

4. 数据库调用处理
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="func"></param>
/// <returns></returns>
public static T Excute<T>(string sql, Func<SqlCommand, T> func)
{
using (SqlConnection conn = new SqlConnection(""))
{
//conn.Open();
SqlTransaction trans = conn.BeginTransaction();
try
{
SqlCommand command = new SqlCommand(sql, conn);
T t = func(command);
trans.Commit();
return t;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
trans.Rollback();
throw ex;
}
}
}

5.LINQ TO OBJECT:封装一系列的操作,内存数据;linq to sql:llinq操作数据库;linq to redis,linq to excel; linq to everthing
public static class CustomLinqExtend
{
public static List<T> ElevenWhere<T>(this List<T> lists, Func<T, bool> func)
{
List<T> tList = new List<T>();
foreach (var student in lists)
{
if (func.Invoke(student))
{
tList.Add(student);
}
}
return tList;
}
}

标签:WriteLine,object,linq,static,student,Action,错误处理,public
来源: https://www.cnblogs.com/csj007523/p/16407187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有