我有一个名为AuthoriseAttribute它的构造看起来像这样的自定义属性:如何插入方法的参数为自定义属性
public AuthoriseAttribute(int userId)
{
.. blah
}
这是使用一种称为GetUserDetails()
这样的:
[Authorise(????????)]
public UserDetailsDto GetUserDetails(int userId)
{
.. blah
}
在运行时,Authorize属性的存在会导致执行一些授权代码,这需要用户的ID。显然,这可以从GetUserDetails()
方法的参数被提取,但是这意味着该授权码依赖于方法的参数被赋予一个特定的名称。
我希望能够将userId
参数的实际值传递给属性,以便授权代码使用传递给属性(即不是方法参数)的值,该值的名称是已知的。
这样的事情(不工作):
[Authorise(userId)]
public UserDetailsDto GetUserDetails(int userId)
{
.. blah
}
这种事可能吗?
没有不可能的。属性是元数据。参数值必须是一个常数值。 – vcsjones
有一些我不明白的 - 你为什么要授权一个方法参数?海事组织 - 你可能需要授权方法的调用者 - 这是正确的吗? – Sunny
您所描述的内容不能直接完成,因为我确定编译器错误告诉您。了解“授权属性的存在是如何导致某些授权代码执行”的工作是有帮助的。你应该可以让代码看看userId参数。 –