【发布时间】:2013-12-01 18:36:48
【问题描述】:
我想为 System.Web.Caching.Cache 编写一个包装器,它处理我的缓存请求。
如果缓存条目不存在,我需要一个可以调用回调方法的方法。问题是:我不知道回调方法有多少个参数:
public T Get<T, TCallback>(string key, TCallback func) where TCallback : Func<T>
{
// check cachekey, do sth
T result = func.Invoke();
return result;
}
使用此实现,可以在没有参数的情况下提供回调。但是如果我有一些呢?
谢谢, 试用
【问题讨论】:
-
不知道它有多少参数怎么调用呢?参数从哪里来?如果您将泛型限制为单一类型,也没有理由使用泛型。
-
这就是问题所在。不知道有没有办法解决这个问题。
-
@lee,也不是他们!最好的选择是创建一个 func 来发送回调中已经存在的所有参数;例如() => MyCallback(arg1, arg2)
-
那是糟糕的设计。最好的办法是实现一些以
Func<T>、Func<T1,T2>等为参数的重载。 -
好吧,你可以使用
DynamicInvoke,但价格昂贵。