Wie man benutzerdefinierte Attribute für einen controller in asp.net core rc2
Habe ich erstellt ein benutzerdefiniertes Attribut :
[AttributeUsage(AttributeTargets.Method| AttributeTargets.Class)]
public class ActionAttribute : ActionFilterAttribute
{
public int Id { get; set; }
public string Work { get; set; }
}
mein controller :
[Area("Administrator")]
[Action(Id = 100, Work = "Test")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
mein code : ich benutze Reflexion zu finden, die alle Domänencontroller in der aktuellen assembly
Assembly.GetEntryAssembly()
.GetTypes()
.AsEnumerable()
.Where(type => typeof(Controller).IsAssignableFrom(type))
.ToList()
.ForEach(d =>
{
//how to get ActionAttribute ?
});
ist es möglich, Lesen Sie alle ActionAttribute
pragmatisch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen Sie die Attribute von der Klasse, für die Sie etwas tun können, die folgenden:
zurück
IEnumerable<YourAttribute>
.So, in deinem code so etwas wie:
Edit:
Fall mit CoreCLR Sie anrufen möchten, müssen Sie eine weitere Methode, weil die API wurde ein wenig verändert:
Assembly.GetEntryAssembly()
erhalten Sie die assembly, die als Eintrag. Also ist das Verhalten anders sein wird als Beispiel Ihre unit-tests.Den aktuell Antwort klappt nicht immer, aber abhängig davon, welche Eintrag, den Punkt, den Sie verwenden für Ihre Anwendung. (Er wird unterbrochen, als Beispiel auf unit-tests).
Bekommen alle Klassen in der gleichen assembly, wo das Attribut definiert ist