C#转换动作<;汽车>;采取行动<;列表<;汽车>;
我有一个方法,它接受一个参数C#转换动作<;汽车>;采取行动<;列表<;汽车>;,c#,type-conversion,action,C#,Type Conversion,Action,我有一个方法,它接受一个参数Action list=carList); return ExpectCars(carActionList).Single(); } 公共静态列表(操作预处理器) { var carList=新列表{ 新车{ 类型=新列表{ 新类型{Name=“SuperCar”} } } }; 预处理器调用(carList); 返回卡利斯特; } } 班车 { 公共列表类型{get;set;} } 公共类类型 { 公共字符串名称{get;set;} } 它给了我一个空引用异常,因
Action list=carList);
return ExpectCars(carActionList).Single();
}
公共静态列表(操作预处理器)
{
var carList=新列表{
新车{
类型=新列表{
新类型{Name=“SuperCar”}
}
}
};
预处理器调用(carList);
返回卡利斯特;
}
}
班车
{
公共列表类型{get;set;}
}
公共类类型
{
公共字符串名称{get;set;}
}
它给了我一个空引用异常,因为类型是空的,因为我提前调用了。调用只需要在第二种方法中进行。您的问题确实不清楚。你能用这样的方法来解决你的问题吗?谢谢你的建议。空引用源于模型。类型为空。我的问题是如何在不调用任何东西的情况下将操作转换为操作?如果没有显示任何错误,我不会在这里发布此问题:(.我知道代码是错误的,但它已经尽可能接近我想要的了。我不明白你的问题。
Action
和Action
是两个不同的东西。我没有注意到问题是NRE。不管怎样,它仍然完全不清楚你到底想要实现什么。看起来你应该把列表
传递给操作。
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; }
}