C#将Action <car>转换为Action <list <car>

时间:2018-04-25 06:59:25

标签: c# type-conversion action

我有一个方法,它接受Action<List<Car>的参数,该参数在该方法的列表中调用。 (方法2)

在另一个调用上述方法的方法中,我有一个Action<Car>作为输入参数。

当方法2中的调用发生时,我希望调用方法1中的Action<Car>

我不知道如何将Action<Car>转换为Action<List<Car>而不调用已在仅对Car执行操作的方法中的内容。

示例(http://rextester.com/STWWVO99830):

class Program
{
    public static void Main(string[] args)
    {
        var car = ExpectCar(model =>
        {
            foreach (var type in model.Types)
            {
                type.Name = "SuperStarShineType";
            }
        });
    }



    public static Car ExpectCar(Action<Car> preProcessor)
    {
        var car = new Car();
        preProcessor.Invoke(car);

        var carList = new List<Car> { car };
        var carActionList = new Action<List<Car>>(list => list = carList);

        return ExpectCars(carActionList).Single();
    }


    public static List<Car> ExpectCars(Action<List<Car>> preProcessor)
    {
        var carList = new List<Car> {
            new Car {
                Types = new List<Type> {
                    new Type {Name = "SuperCar"}
                }
            }
        };

        preProcessor.Invoke(carList);

        return carList;
    }

}
class Car
{
    public List<Type> Types { get; set; }
}

public class Type
{
    public string Name { get; set; }
}

它给了我一个空引用异常,因为类型是空的,因为我早期调用了它。调用只需要在第二种方法中发生。

0 个答案:

没有答案