方法或委托参数与委托参数

时间:2015-05-26 21:48:55

标签: c# parameters action func

我正在做一些异步缓存,我正在使用一个简单的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) {}

据我所知,所有参数和返回类型都是正确的,但是我收到以下错误:

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

有谁可以指出我做错了什么?这可能是一个协方差问题吗?

1 个答案:

答案 0 :(得分:1)

我想您要在Func<T, IEnumerator> method的参数列表中指定Func<IEnumerator, T> method而不是StartCoroutine<T>

它是Func<T, TResult>:返回类型是最后一个类型参数 - 您的CacheSceneNames采用ActionT)参数并返回{{ 1}}。