2012-07-18 194 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