可以使用扩展方法和函数式编程的概念实现类似于LINQ的方式调用自定义类的方法。
下面是一个简单的示例:
using System;
using System.Collections.Generic;
using System.Linq;
public static class MyCustomClassExtensions
{
public static MyCustomClass Where(this MyCustomClass obj, Func<int, bool> predicate)
{
List<int> filteredList = new List<int>();
foreach (int item in obj.Items)
{
if (predicate(item))
{
filteredList.Add(item);
}
}
return new MyCustomClass(filteredList);
}
public static MyCustomClass Select(this MyCustomClass obj, Func<int, int> selector)
{
List<int> transformedList = new List<int>();
foreach (int item in obj.Items)
{
transformedList.Add(selector(item));
}
return new MyCustomClass(transformedList);
}
}
public class MyCustomClass
{
public List<int> Items { get; }
public MyCustomClass(List<int> items)
{
Items = items;
}
public void PrintItems()
{
foreach (int item in Items)
{
Console.WriteLine(item);
}
}
}
public class Program
{
public static void Main()
{
MyCustomClass obj = new MyCustomClass(new List<int> { 1, 2, 3, 4, 5 });
// 使用类似LINQ的方式调用自定义类的方法
obj.Where(x => x % 2 == 0)
.Select(x => x * 2)
.PrintItems();
}
}
在示例中,创建一个静态类MyCustomClassExtensions,其中定义了两个扩展方法Where和Select。这些方法接受一个MyCustomClass对象作为参数,并使用函数式编程的概念对类的数据进行筛选和转换。
然后,创建一个自定义类MyCustomClass,其中包含一个整数列表Items和一个打印列表的方法PrintItems。
在Main方法中,创建一个MyCustomClass对象obj,然后使用扩展方法Where和Select以类似LINQ的方式对对象的数据进行筛选和转换,并最后调用PrintItems方法打印结果。
通过使用扩展方法和函数式编程的概念,可以实现类似于LINQ的方式调用自定义类的方法,使代码更加简洁。