.Net扩展类的研究-提高编程效率

简介: 测试项目结构://ObjectExtension.csusing System;using System.Collections.Generic;using System.

测试项目结构:



//ObjectExtension.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApplication2.Extension
{
    public static class ObjectExtension
    {
        /// <summary>
        /// 拓展方法:判断是否有值且不是空字符
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool IsNotNull(this string obj)
        {
            if (obj == null || obj == "") return false;
            if (obj.Trim() == "") return false;
            else return true;
        }

        /// <summary>
        /// Splits the CSV.
        /// </summary>
        /// <param name="line">The line.</param>
        /// <returns></returns>
        public static string[] SplitCsv(this string line)
        {
            Regex regex = new Regex("\".*?\"");
            var a = regex.Matches(line).Cast<Match>().Select(m => m.Value).ToList();
            var b = regex.Replace(line, "%_%");
            var c = b.Split(',');
            for (int i = 0, j = 0; i < c.Length && j < a.Count; i++)
            {
                if (c[i] == "%_%")
                {
                    c[i] = a[j++];
                }
            }
            return c;
        }
    }
}

//Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using ConsoleApplication2.Extension;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "1,张三,\"这是张三的简历,他是一个很好的人,虽然说话不多\",\"这是张三的备注,他参加工件多年,经验丰富,解决了很多技术难题\"";
            Console.WriteLine(s.IsNotNull());
            string[] splited = s.SplitCsv();
            Console.WriteLine("Splited Length:"+splited.Length);
            foreach(var sp in splited)
            {
                Console.WriteLine(sp);
            }
            Console.ReadLine();
        }
    }
}

这是最普通的用法,每次使用扩展类时,都要手动添加引用的命名空间,不然vs不提示出来扩展方法,手动写出来不加命名空间也报错:

using ConsoleApplication2.Extension;

有时候,这种使用方法让人很烦躁,效率也不高



提高篇:

现在我们改一下 ObjectExtension.cs 的命名空间,直接改为 System


然后,在Program.cs 中就不需要引用额外的命名空间了。




原因是什么,就是我们使用的命名空间System,是.Net最基本的命名空间,每新建一个cs文件,都已经包含了这个命名空间了,所以不需要再引用了。


这也是一种投机取巧的方法,因为我们开发常用的一些扩展方法,如果每次放到新项目中,都要加新项目命名空间的前缀为类的命名空间,使用时也要引用 ,那效率真的不高。

这种方法也正好很方便的利用来提高开发效率,而且在不同的项目中不需要改类的命名空间,也不需要添加额外的引用,我觉得是很完美的方法。



最后附图运行结果:









相关文章
|
8月前
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
7天前
|
机器学习/深度学习 算法 数据可视化
MATLAB基于深度学习U-net神经网络模型的能谱CT的基物质分解技术研究
MATLAB基于深度学习U-net神经网络模型的能谱CT的基物质分解技术研究
14 0
|
4月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
11月前
|
C#
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
125 0
|
开发框架 JSON 前端开发
【C#】.net core2.1,自定义全局类对API接口和视图页面产生的异常统一处理
在开发一个网站项目时,异常处理和过滤功能是最基础的模块 本篇文章就来讲讲,如何自定义全局异常类来统一处理
208 0
|
开发框架 程序员 API
【C#】.net core2.1,通过扩展状态代码页方法对404页面进行全局捕抓并响应信息
在开发一个网站项目时,除了异常过滤功能模块,还需要有针对404不存在的api接口和页面处理功能 本篇文章就来讲讲,如何自定义全局请求状态类来统一处理
188 0
|
JSON 数据格式
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
535 0
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
|
缓存 移动开发 C#
【.Net实用方法总结】 整理并总结System.IO中TextWriter类及其方法介绍
本文主要介绍System.IO命名空间的TextWriter类,介绍其常用的方法和示例说明。
|
C# 开发者 索引
【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍
本文主要介绍System.IO命名空间的TextReader类,介绍其常用的方法和示例说明。