2015-06-17 2 views
3

Я пытаюсь получить атрибуты на контроллере и методах контроллера, но я не могу сделать необходимые методы и свойства, доступные в DNX Core 5.0. Я хочу получить, какие роли должен получить пользователь для доступа к данному методу. Например, если у меня есть этотНевозможно создать метод Type.GetType (string TypeName) и свойство MemberInfo.CustomAttributes, доступное в DNX Core 5.0

[Authorize(Roles = "Admin")] 
public class UserController : Controller 
{ 
    public IActionResult Index() 
    { 
     return View(); 
    } 
} 

Я хочу, чтобы быть в состоянии получить, что пользователь нуждается в роли администратора, чтобы иметь возможность доступа этот контроллер. Мой файл project.json для dnxcore50 выглядит следующим образом:

"dnxcore50": { 
    "dependencies": { 
    "System.Collections": "4.0.10-beta-*", 
    "System.Collections.Concurrent": "4.0.10-beta-*", 
    "System.IO": "4.0.10-beta-*", 
    "System.Linq": "4.0.0-beta-*", 
    "System.Linq.Expressions": "4.0.10-beta-*", 
    "System.Reflection": "4.0.10-beta-*", 
    "System.Reflection.Emit": "4.0.0-beta-*", 
    "System.Reflection.Emit.Lightweight": "4.0.0-beta-*", 
    "System.Reflection.Extensions": "4.0.0-beta-*", 
    "System.Reflection.TypeExtensions": "4.0.0-beta-*", 
    "System.Reflection.Primitives": "4.0.0-beta-*", 
    "System.Runtime": "4.0.20-*", 
    "System.Runtime.Extensions": "4.0.10-beta-*", 
    "System.Runtime.CompilerServices.VisualC": "4.0.0-beta-*", 
    "System.Runtime.InteropServices": "4.0.20-beta-*", 
    "System.Text.Encoding": "4.0.10-beta-*", 
    "System.Text.RegularExpressions": "4.0.10-beta-*", 
    "System.Threading": "4.0.10-beta-*" 
    } 
}  

Любые идеи о том, как я хотел бы получить необходимые методы/свойства становятся доступными в DNX Ядра 5.0 или какие-либо другие предложения о том, как подойти к этой проблеме?

+1

Вы должны '' System.Runtime' и System.Reflection' пакеты использовать эти методы в DNX Ядра и вы уже ссылаются их в project.json. Какие ошибки вы получаете? – whyleee

ответ

3

Если вы посмотрите на исходный код на GitHub, вы можете увидеть, как она обрабатывается (строка 94):

https://github.com/aspnet/Mvc/blob/eef6c3883a7e27b8387b0925f0b6a88df0a484c5/src/Microsoft.AspNet.Mvc.Core/ModelBinding/Metadata/ModelAttributes.cs

Как вы можете видеть, вы должны использовать GetTypeInfo() использовать GetCustomAttributes(). В вашем коде, вы можете сделать:

using System.Reflection; 
... 
obj.GetType().GetTypeInfo().GetCustomAttributes(); 
Смежные вопросы