向List <T>添加新方法

kr8*_*r85 3 c# methods

有没有办法将List方法的新方法添加到它所构成的对象上.换句话说,可以用这样的方式编写类,当List由它构成时,它会向该List添加新方法.这是一个例子:

class Employee
{
    public int age;
    public Employee(int age)
    {
         this.age = age;
    }
    //some more code here...
}
Run Code Online (Sandbox Code Playgroud)

然后:

List<Employee> sector01 = new List<Employee>(){new Employee(22), new Employee(35)};
sector01.OutputAll(); //Adds method like this
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 8

您可以将其定义为扩展方法:

namespace SomeNamespace
{
    public static class ListExtensions
    {
        public static void OutputAll(this IEnumerable<Employee> employees)
        {
            foreach (var employee in employees)
            {
                Console.WriteLine("{0}: {1}", employee.FirstName, employee.LastName);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后简单地将定义此静态类的命名空间放入范围:

using SomeNamespace;
Run Code Online (Sandbox Code Playgroud)

现在你将能够做到这一点:

List<Employee> sector01 = new List<Employee>()
{
    new Employee(22), 
    new Employee(35)
};
sector01.OutputAll();
Run Code Online (Sandbox Code Playgroud)