我有一個名爲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參數。 –