Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按照Fluent Builder模式通过回调向上下文添加值_C#_Callback_Delegates_Builder_Fluent - Fatal编程技术网

C# 如何按照Fluent Builder模式通过回调向上下文添加值

C# 如何按照Fluent Builder模式通过回调向上下文添加值,c#,callback,delegates,builder,fluent,C#,Callback,Delegates,Builder,Fluent,我正在使用带有回调的Fluent Builder动态配置上下文 目前,我有一个PlaneContext类,其中包含一个乘客列表,我希望使用AddPassenger方法填充该列表,如: 目前,PlaneBuilder类的外观如下: class PlaneBuilder<T> { private PlaneContext _planeContext = new PlaneContext(); public PlaneBuilder<T> AddPlane(

我正在使用带有回调的Fluent Builder动态配置上下文

目前,我有一个PlaneContext类,其中包含一个乘客列表,我希望使用AddPassenger方法填充该列表,如:

目前,PlaneBuilder类的外观如下:

class PlaneBuilder<T>
{

    private PlaneContext _planeContext = new PlaneContext();

    public PlaneBuilder<T> AddPlane(Action<PlaneContext> callback)
    {
        callback(_planeContext);
        return this;
    }

    public PlaneBuilder<T> AddPassenger(Func<Passenger, Passenger> callback)
    {
        // Goal is to create a passenger
        // Add it to the passengers list in PlaneContext
        var passenger = callback(new Passenger());
        _planeContext.Passengers.Add(passenger);
        return this;
    }
}

简而言之,如何使用回调将乘客添加到PlaneContext

是我的问题的解决方案,如上所述:

首先,必须在PlaneContext类中初始化列表,如:

public List<Passenger> Passengers = new List<Passenger>();

最近这里有人问了一个非常类似的问题:按照这个建议,你可以只添加一个单独的客运大楼hanks@SimonKatanski!我设法解决了这个问题,我还意识到我有另一个问题,我忘了初始化列表,它给了我错误的对象引用未设置为对象的实例。我将在下面发布一个解决方案。
class PlaneBuilder<T>
{

    private PlaneContext _planeContext = new PlaneContext();

    public PlaneBuilder<T> AddPlane(Action<PlaneContext> callback)
    {
        callback(_planeContext);
        return this;
    }

    public PlaneBuilder<T> AddPassenger(Func<Passenger, Passenger> callback)
    {
        // Goal is to create a passenger
        // Add it to the passengers list in PlaneContext
        var passenger = callback(new Passenger());
        _planeContext.Passengers.Add(passenger);
        return this;
    }
}
class PlaneContext
{
    public string Name { get; set; }
    public string Model { get; set; }
    public List<Passenger> Passengers { get; set; }
}
public List<Passenger> Passengers = new List<Passenger>();
public PlaneBuilder<T> AddPassenger(Action<Passenger> callback)
{
    var passenger = new Passenger();
    callback(passenger);
    _planeContext.Passengers.Add(passenger);
    return this;
}