C# 如何按照Fluent Builder模式通过回调向上下文添加值
我正在使用带有回调的Fluent Builder动态配置上下文 目前,我有一个PlaneContext类,其中包含一个乘客列表,我希望使用AddPassenger方法填充该列表,如: 目前,PlaneBuilder类的外观如下: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(
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;
}