我正在尝试修改委托(本身作为参数传递)以接受其他参数。这是原始方法签名:
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);
}
我确信只需将它添加到委托方法签名就可以了!
答案 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;
}
但基本上,你需要决定代表输入的含义。