У меня есть метод, который принимает аргумент Action<List<Car>
, который вызывается из списка в этом методе.(метод 2)
В другом методе, который вызывает вышеупомянутый метод, у меня есть 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; }
}
Это дает мне исключение нулевой ссылки, потому что типы пусты, потому что я вызывал на раннем этапе. Вызов должен произойти только во втором методе.