全局替换LINQ的使用以调用其他类

时间:2016-11-12 16:57:21

标签: c# linq refactoring

我想注入一些其他代码来替换项目中所有代码文件中LINQ的所有用法,而无需更改单个文件。像这样:

var arr = items.Where(i => i.Price > 10).Select(i => i.Name).ToArray();

我不想在这里调用LINQ扩展,而是重定向到这个类:Company.OtherLinqExtensions,全局集中在一个地方。

我在这里和那里有很多“使用System.Linq”。如何在不更改所有Company.OtherLinqExtensions语句的情况下将其重定向到using

1 个答案:

答案 0 :(得分:0)

假设您在命名空间My.Company中有一些类,它使用了您所描述的LINQ并具有using System.Linq声明。然后将所有对linq方法的调用“重定向”到您的类,您只需要在任何父命名空间(如“My”)中的同一My.Company命名空间中声明您的类:

namespace My.Company { // OR namespace My {
    public static class OtherLinqExtensions {
        public static IEnumerable<T> Select<T, TResult>(this IEnumerable<T> items, Func<T, TResult> selector) {
            // do your stuff
        }
    }
}

然后,所有扩展方法现在将调用OtherLinqExtensions扩展名(当然,前提是您的版本与标准linq声明完全匹配)。