如何使用PostSharp获取在执行特定方法期间执行的所有方法的执行时间?
答案 0 :(得分:1)
使用PostSharp时,通常会将方面直接应用于需要某些特定附加行为的方法。因此,为了测量方法的执行时间,您可以将分析方面应用于该方法。您可以在我们的示例网站上找到自定义性能分析方面的示例:PostSharp.Samples.Profiling
但我知道您需要测量从方面的目标方法调用的每个方法的执行时间。为此,您可以尝试实现方面提供程序,并使用PostSharp.Reflection.ReflectionSearch搜索类查找所有使用的方法。
[PSerializable]
public class ProfileProviderAttribute : MethodLevelAspect, IAspectProvider
{
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
MethodBase targetMethod = (MethodBase) targetElement;
foreach (var codeReference in ReflectionSearch.GetDeclarationsUsedByMethod(targetMethod))
{
if (codeReference.UsedDeclaration.MemberType == MemberTypes.Method)
{
yield return new AspectInstance(codeReference.UsedDeclaration, new ProfileAttribute());
}
}
}
}