我有一个方法,它接受在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; }
}
它给了我一个空引用异常,因为类型是空的,因为我很早就调用了。调用只需要在第二种方法中发生。