Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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# 参数类型对象不可分配给System.Func<;对象>;错误_C#_Delegates - Fatal编程技术网

C# 参数类型对象不可分配给System.Func<;对象>;错误

C# 参数类型对象不可分配给System.Func<;对象>;错误,c#,delegates,C#,Delegates,我收到一条对我来说毫无意义的错误消息 public class ChartInitializerBase { #region Constructors public ChartInitializerBase(Func<object> retrieveData) { var Data = retrieveData; } #endregion } 如果我收到CD,我想说 var intiialiser = new ChartIni

我收到一条对我来说毫无意义的错误消息

public class ChartInitializerBase
{
    #region Constructors
    public ChartInitializerBase(Func<object> retrieveData)
    {
        var Data = retrieveData;
    }
    #endregion
}
如果我收到CD,我想说

var intiialiser = new ChartInitializerBase(GetBooks(1234, 231))
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
}
我尝试了静态和非静态类以及静态和非静态方法

不管我用哪种方法,我仍然得到参数类型的对象不可分配给System.Func error

我对这类事情还不熟悉,有人能建议我需要做些什么来解决这个问题吗

我见过这个

但是我认为这对我没有帮助

我不确定我是否将其标记在正确的区域。如果我错了,请随意更改


Paul

尝试将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
}
公共图表初始化器数据库(Func retrieveData)
{ 
var Data=retrieveData();//这里将调用方法GetBooks并返回数据
}