如何调试来自nuget的属性代码?
问题描述:
我有一个方法,我创建它的属性。我已经将属性打包到nuget包(调试符号模式)中,就像我想要调试到nuget包时一样。
问题
我怎样才能踏进这个属性?我是否需要将其他“步入此属性”放入我的属性代码?我只发现了停止我调试DebuggerStepThroughAttribute的属性,但没有什么可以让我在调试时明确停止(当然你不需要正常)。
我希望我已经解释得很好。
编辑(详细信息)
乔丹建议调用该方法GetCustomAttributes但不是(在我的情况下,在至少)的选项。我的属性正在对API调用进行标记验证,因此如果属性中的代码拒绝访问,则不允许(401)该方法。而且我也不能把制动点放入nuget包装,我需要能够进入该代码。
编辑2(最后...代码)
所以最后有代码..余did't觉得我需要一个,但我们在这里:-)。
我已经实现了我自己的属性(就像你可以做的那样),在那里有我希望能够调试到的代码。
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]
答
据MSDN,Attributes
懒洋洋地实例:
重要的是要注意,这些属性的对象是非常重要的懒洋洋地实例化了 。也就是说,只有在使用 GetCustomAttribute或GetCustomAttributes之后,它们才会被实例化。它们每次都被实例化为 。连续调用GetCustomAttributes两次将返回两个 ObsoleteAttribute的不同实例。
如果你需要踏进他们,你应该能够通过调用对有问题的类型GetCustomAttributes
,并把一个破发点的Attribute
内做到这一点。
属性是装饰物,不会在没有反射的情况下改变执行。你使用了什么属性,并且你正确使用它?如果你只是试图在没有相关框架的情况下实例化装饰类,就不会发生任何事情。 –
@MthetheWWhited我用代码更新了问题。我相当肯定我正确使用这个。一直在做这么长时间,但从来没有我的属性在nuget包中,需要调试到代码中。如果我只是将nuget项目导入到我的解决方案中,我可以很好地进行调试。 – Sturla