2013-03-31 31 views
1

我收到一條錯誤消息,使我絕對沒有意義!參數類型對象不可分配給System.Func <object>錯誤

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)) 

上面的參數是不同的,但GetCDs和G etBooks將返回一個對象

在我的確切情況我有

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錯誤

我是新來的這種事情,請有人可以建議我需要做什麼來解決這個問題?

我已經看到了這Parameter type not assignable when storing func in dictionary

但是,我認爲它可以幫助我

我不知道如果我在正確的區域標記此請隨時改變,如果我錯了

Paul

回答

6

嘗試將lambda傳遞給您的構造函數,而不是方法執行的結果,如下面的代碼示例中所示。

var initialiser = new ChartInitializerBase(() => GetBooks(1234, 231)); 

在這裏,你只需通過拉姆達與一個聲明 - 來電GetBooks方法

你的構造應該像

public ChartInitializerBase(Func<object> retrieveData) 
{ 
     var Data = retrieveData(); //here the method GetBooks will be called and data returned 
} 
+0

這工作!謝謝! – Paul

相關問題