0

Doit関数(.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 );
    }
}

誰かが何が悪いのか知っていますか?

4

3 に答える 3

5

ジェネリックが正しく機能するには、に変更LoadAssetする必要があります。LoadAsset<A>

于 2012-07-18T11:57:48.523 に答える
2

static クラスにインスタンス メソッドを含めることはできません。

于 2012-07-18T12:00:02.267 に答える
0

を呼び出すときは、 の代わりにLoadPref<A>渡します。LoadAsset<A>LoadAsset

于 2012-07-18T11:59:05.107 に答える