如何只通过一个通用委托来获取方法的输入参数?

时间:2011-08-02 15:26:59

标签: c# reflection

string CreateCacheKey(delegate methodDelegate)
{
 // return cache key based on the input parameters of the method passed to this
}

User[] GetAll(short id, string name)
{
  CreateCacheKey (this.GetAll);
}

如何只通过一个通用委托来获取方法的输入参数?

我认为唯一的选择应该是反思。

谢谢,

2 个答案:

答案 0 :(得分:1)

委托有一个.Method(假设它是一个委托,而不是复合委托 - 你可能需要调用GetInvocationList)。

从方法中,您可以查询GetParameters()。

答案 1 :(得分:0)

您可以指定具有固定参数的delegate,还是使用通用委托类型(delegate)而不是常规GetAllHandler<T>

您能否解释一下CreateCacheKey正在做什么以及为什么?也许是一个现实世界的例子?