上海市住房和城乡建设部官方网站,家政公司网站的建设,网站风格和色调,wordpress上传视频插件定义微软对于扩展方法的定义是:扩展方法使你能够向现有类型“添加”方法#xff0c;而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种静态方法#xff0c;但可以像扩展类型上的实例方法一样进行调用。对于用 C#、F# 和 Visual Basic 编写的客户端代… 定义微软对于扩展方法的定义是:扩展方法使你能够向现有类型“添加”方法而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种静态方法但可以像扩展类型上的实例方法一样进行调用。对于用 C#、F# 和 Visual Basic 编写的客户端代码调用扩展方法与调用在类型中定义的方法没有明显区别。使用首先我们定义一个简单类public class UserInfomation{public string Name { get; set; }public int Age { get; set; }public string Sex { get; set; }}准备一些数据实例化UserInformation对象ListUserInfomation lstUserInfomation new ListUserInfomation { new UserInfomation{Name张三,Age18,Sex男 },new UserInfomation{Name李四,Age19,Sex男 },new UserInfomation{Name王五,Age20,Sex男 },
};比如我们过滤出年龄大于19的数据并形成一个新的集合。这时候大多数人都知道使用linq语句中的where方法lstUserInfomation.Where(o o.Age 19).ToList();那如果我们现在要过滤出年龄大于19的数据并形成一个新的Json数据呢我们发现微软并没有实现ToJson。可能有的Neter就说了这个还不简单吗我们封装一个Jsonhelp类不就行了吗说干就干public static class JsonHelper{public static string ToJson(object obj){return JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented,new JsonSerializerSettings{PreserveReferencesHandling PreserveReferencesHandling.Objects,});}}使用JsonHelper.ToJson(lstUserInfomation.Where(o o.Age 19).ToList());这样不就实现了吗确实但是我觉得这样使用不够优雅那么我们能不能简化一下写成xxx.ToJson呢?可能有的Neter就说了 我们实现一个扩展方法不就行了吗扩展方法怎么定义呢扩展方法是静态类的静态方法其实第一个参数用this修饰符代表源元素的类型。那么我们把刚刚那个方法修改一下public static class JsonHelper{public static string ToJson(this object obj){return JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented,new JsonSerializerSettings{PreserveReferencesHandling PreserveReferencesHandling.Objects,});}}使用stUserInfomation.Where(o o.Age 19).ToJson();这样我们扩展方法就实现成功啦最后大家如果喜欢我的文章还麻烦给个关注, 希望net生态圈越来越好