2012-07-18 193 views
0

我得到這些錯誤與此代碼的功能大一(我運行.NET 3.5):這段代碼爲什麼不編譯?

錯誤1:The best overloaded method match for 'LoadPref<A>(string, System.Func<string,A>, A)' has some invalid arguments
錯誤2:Argument '2': cannot convert from 'method group' to 'System.Func<string,A>'

class A : SomeObject 
{ 

} 

static class Utilities 
{ 
    private T LoadPref<T>(string key, Func<string, T> loaderFunc, T defaultValue) 
    {   
     if (Prefs.HasKey(key)) 
     { 
      return loaderFunc(Prefs.GetString(key)); 
     } 

     return defaultValue; 
    } 


    private T LoadAsset<T>(string assetPath) where T : SomeObject 
    { 
     return (T)LoadAssetInSomeWay(assetPath); 
    } 


    private void Doit() 
    { 
     A asset = LoadPref<A>("key", LoadAsset, null); 
    } 
} 

任何人知道什麼是錯的?

回答

5

您需要更改LoadAssetLoadAsset<A>,以使仿製藥正常工作。

+0

我正要回答我自己的問題 - 謝謝! – sirival 2012-07-18 12:00:51

0

當您撥打LoadPref<A>時,請通過LoadAsset<A>而不只是LoadAsset

2

靜態類不能包含實例方法。

+0

好的。我完全錯過了它。 – GregRos 2012-07-18 12:01:45