首页 > 解决方案 > C# 转换动作行动

问题描述

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

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

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

我不知道如何转换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; }
}

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

标签: c#type-conversionaction

解决方案


推荐阅读