委托参数作为方法参数传递 - 如何访问委托arg?

时间:2014-08-08 10:14:25

标签: c# asp.net-mvc-4 delegates

我正在尝试修改委托(本身作为参数传递)以接受其他参数。这是原始方法签名:

public static T GetCacheItem<T>(String key, Func<T> cachePopulate)

我把它修改成这样:

public static T GetCacheItem<T>(String key, Func<string, T> cachePopulate)

如何使用新的字符串参数?在方法代码中,我可以看到cachePopulate()现在期待string arg,但它是什么?我实际上将cachePopulate()作为参数传递给了什么?

更新

为了追求简洁,我可能没有很好地解释自己。也许我应该问如何调用方法的更新版本。无论如何,这些评论帮助我理解额外的委托参数实际上是作为GetCacheItem方法的附加参数传递的,如下所示:

public static T GetCacheItem<T>(String key, string newparam, Func<string, T> cachePopulate)
{
    ...
    cachePopulate(newparam);
}

我确信只需将它添加到委托方法签名就可以了!

1 个答案:

答案 0 :(得分:2)

怀疑你想要:

public static T GetCacheItem<T>(String key, Func<string, T> cachePopulate)
{
    // TODO: Try to get it from the cache

    // But if not...
    T result = cachePopulate(key);
    // TODO: Cache it
    return result;
}

但基本上,需要决定代表输入的含义。