C#转换动作<;汽车>;采取行动<;列表<;汽车>;

C#转换动作<;汽车>;采取行动<;列表<;汽车>;,c#,type-conversion,action,C#,Type Conversion,Action,我有一个方法,它接受一个参数Action list=carList); return ExpectCars(carActionList).Single(); } 公共静态列表(操作预处理器) { var carList=新列表{ 新车{ 类型=新列表{ 新类型{Name=“SuperCar”} } } }; 预处理器调用(carList); 返回卡利斯特; } } 班车 { 公共列表类型{get;set;} } 公共类类型 { 公共字符串名称{get;set;} } 它给了我一个空引用异常,因

我有一个方法,它接受一个参数
Action list=carList);
return ExpectCars(carActionList).Single();
}
公共静态列表(操作预处理器)
{
var carList=新列表{
新车{
类型=新列表{
新类型{Name=“SuperCar”}
}
}
};
预处理器调用(carList);
返回卡利斯特;
}
}
班车
{
公共列表类型{get;set;}
}
公共类类型
{
公共字符串名称{get;set;}
}

它给了我一个空引用异常,因为类型是空的,因为我提前调用了。调用只需要在第二种方法中进行。

您的问题确实不清楚。你能用这样的方法来解决你的问题吗?谢谢你的建议。空引用源于模型。类型为空。我的问题是如何在不调用任何东西的情况下将操作转换为操作?如果没有显示任何错误,我不会在这里发布此问题:(.我知道代码是错误的,但它已经尽可能接近我想要的了。我不明白你的问题。
Action
Action
是两个不同的东西。我没有注意到问题是NRE。不管怎样,它仍然完全不清楚你到底想要实现什么。看起来你应该把
列表
传递给ExpectCars而不是您现在尝试执行的
操作。
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; }
}