【发布时间】:2017-07-19 10:51:50
【问题描述】:
设置
我创建了一个带有属性的方法。我已经将属性打包到一个 nuget 包(调试符号模式)中,就像我想调试到 nuget 包时一样。
问题
我怎样才能进入这个属性?我需要在我的属性代码中加入一些其他的“进入这个”属性吗?我只找到了 stops 我的调试 DebuggerStepThroughAttribute 的属性,但没有任何东西可以让我在调试时显式停止(当然你通常不需要)。
我希望我已经解释得足够清楚了。
编辑(更多信息)
Jordan 建议在方法中调用 GetCustomAttributes,但这不是一个选项(至少在我的情况下)。我的属性正在对 API 调用进行令牌验证,因此如果属性中的代码拒绝访问,则不允许您 (401) 进入该方法。而且我不能在 nuget 包中设置刹车点,我需要能够进入该代码。
编辑 2(终于...代码)
所以终于有代码了。我不认为我需要一个,但我们在这里:-)。
我已经实现了我自己的属性(你可以这样做),其中有我希望能够调试的代码。
public class TokenAuthenticate : ActionFilterAttribute, IAuthenticationFilter
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
}
public bool AllowMultiple => true;
public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
{
//... where I want to debug into
}
}
然后这个属性就在这样的方法或类上 [TokenAuthenticate ]
【问题讨论】:
-
属性是装饰,不会在没有反射的情况下改变执行。您正在使用什么属性并且您是否正确使用它?如果您只是尝试在没有相关框架的情况下实例化装饰类,则不会发生任何事情。
-
@MatthewWhited 我用代码更新了这个问题。我很确定我使用正确。做了很长时间,但从来没有在 nuget 包中包含我的属性,需要调试代码。如果我只是将 nuget 项目导入到我的解决方案中,我可以很好地调试。
标签: c# .net custom-attributes