方法或委托参数与委托参数不匹配
Method or delegate parameters do not match delegate parameters
我正在做一些异步缓存,我正在使用一个简单的 Action 回调让系统的其余部分知道缓存何时完成。
入口点(导致错误的行):
this.StartCoroutine<Action>(SceneUtils.CacheSceneNames, PopulateButtons);
协程方法:
public static IEnumerator CacheSceneNames(Action completedCallback) {}
回调方法:
private void PopulateButtons() {}
最后,启动协程的方法:
public static Coroutine StartCoroutine<T>(this MonoBehaviour extends, Func<IEnumerator, T> method, T value) {}
据我所知所有参数和 return 类型都是正确的,但是我收到以下错误:
error CS0123: A method or delegate `CacheSceneNames(System.Action)' parameters do not match delegate `System.Func<System.Collections.IEnumerator,System.Action>(System.Collections.IEnumerator)' parameters
谁能指出我做错了什么?这可能是协方差问题吗?
我想你想在 StartCoroutine<T>
的参数列表中指定 Func<T, IEnumerator> method
而不是 Func<IEnumerator, T> method
。
它是 Func<T, TResult>
:return 类型是最后一个类型参数 - 而你的 CacheSceneNames
接受一个参数 Action
(T
) 和 returns IEnumerator
.
我正在做一些异步缓存,我正在使用一个简单的 Action 回调让系统的其余部分知道缓存何时完成。
入口点(导致错误的行):
this.StartCoroutine<Action>(SceneUtils.CacheSceneNames, PopulateButtons);
协程方法:
public static IEnumerator CacheSceneNames(Action completedCallback) {}
回调方法:
private void PopulateButtons() {}
最后,启动协程的方法:
public static Coroutine StartCoroutine<T>(this MonoBehaviour extends, Func<IEnumerator, T> method, T value) {}
据我所知所有参数和 return 类型都是正确的,但是我收到以下错误:
error CS0123: A method or delegate `CacheSceneNames(System.Action)' parameters do not match delegate `System.Func<System.Collections.IEnumerator,System.Action>(System.Collections.IEnumerator)' parameters
谁能指出我做错了什么?这可能是协方差问题吗?
我想你想在 StartCoroutine<T>
的参数列表中指定 Func<T, IEnumerator> method
而不是 Func<IEnumerator, T> method
。
它是 Func<T, TResult>
:return 类型是最后一个类型参数 - 而你的 CacheSceneNames
接受一个参数 Action
(T
) 和 returns IEnumerator
.