C # Преобразовать действие <Car>в действие <список <Car> - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть метод, который принимает аргумент 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; }
}

Это дает мне исключение нулевой ссылки, потому что типы пусты, потому что я вызывал на раннем этапе. Вызов должен произойти только во втором методе.

...