【发布时间】:2014-08-24 09:09:28
【问题描述】:
下面是我希望用于实现缓存提供程序的拦截器的代码。我需要确定将被调用的方法的返回类型。当调用的方法是同步的时,这非常简单。但是我遇到的大多数方法都是异步的,它们正在返回一个任务。
如何使用反射来确定异步方法的返回类型?
public void Intercept(IInvocation invocation)
{
try
{
if (invocation.Method.Name.StartsWith("Retrieve"))
{
var returnType = invocation.Method.ReturnType;
if (returnType.IsGenericType &&
returnType.GetGenericTypeDefinition() == typeof (Task<>))
{
var returnTypeOfTheTask = returnType.NeedSomeHelpHere();
}
}
_circuitBreaker.Execute(invocation);
}
// ...
}
【问题讨论】:
-
试试
var returnTypeOfTheTask = returnType.GenericTypeArguments[0];。
标签: c# reflection aop castle-dynamicproxy