我收到的错误消息对我来说完全没有意义!!
public class ChartInitializerBase
{
#region Constructors
public ChartInitializerBase(Func<object> retrieveData)
{
var Data = retrieveData;
}
#endregion
}
上面构造函数的想法是我可以传递不同的方法来获取数据
例如,如果我要显示我想说的书
var intiialiser = new ChartInitializerBase(GetBooks(1234, 231))
如果我要获得CD,我想说
var intiialiser = new ChartInitializerBase(GetCDs(1234, 231, 34))
上述参数不同,但GetCD和GetBooks都会返回单个对象
在我确切的情况下,我有
var chart = new DailyConsumptionChart(
dataProvider.GetDataForDailyConsumptionChart("1", EUtilityGroup.Electricity, 321, 157, Convert.ToDateTime("01/01/2010"), Convert.ToDateTime("01/01/2010 23:30"), false));
public class ProfileDataDashboardReportsDataProvider
{
#region Methods
public object GetDataForDailyConsumptionChart(string idString, EUtilityGroup ug, int customerId, int userId, DateTime startDate, DateTime endDate, bool clockTime)
{
var mdp = new MeterDataProvider();
var result = mdp.GetProfileDataForLocationForADay(idString, ug, customerId, userId, startDate, endDate, clockTime);
return result;
}
#endregion
}
我已经尝试过这个静态非静态类以及静态和非静态方法
这样做没有区别我仍然得到Argument类型对象不能分配给System.Func错误
我是这种新手,请有人建议我需要做些什么来解决这个问题?
我见过这个Parameter type not assignable when storing func in dictionary
但我不认为这有助于我
我不确定我是否在正确的区域标记这个,如果我错了,请随时更改
保
答案 0 :(得分:6)
尝试将lambda传递给构造函数,而不是方法执行的结果,如下面的代码示例所示。
var initialiser = new ChartInitializerBase(() => GetBooks(1234, 231));
这里你只需传递lambda一个语句 - 调用GetBooks方法
你的构造函数应该像
public ChartInitializerBase(Func<object> retrieveData)
{
var Data = retrieveData(); //here the method GetBooks will be called and data returned
}