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