Feedback

C# - Attribute zur Laufzeit abfragen

Veröffentlicht von am 30.01.2008
(1 Bewertungen)
Mit Hilfe dieser Klasse könnt Ihr zur Laufzeit prüfen ob Attribute auf Klassen definiert sind, falls dies der Fall ist könnt ihr mit den anderen beiden Methoden abfragen ob das Value des Attributes true ist oder das Value als string auslesen.
GFU-Schulungen  [Anzeige]

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

  internal class AttributeLogic
    {
        internal static readonly AttributeLogic Instance = new AttributeLogic();

        internal string GetAttributeValue(Type targetType, Type attributeType, string attributePropertyName)
        {
            if (Attribute.IsDefined(targetType, attributeType))
            {
                Object att = Attribute.GetCustomAttribute(targetType, attributeType);
                PropertyInfo pi = att.GetType().GetProperty(attributePropertyName);
                if (pi == null)
                {
                    throw new Exception(String.Format("The {0} attribute on the {1} type dosen't define the {2} property",
                        new object[] { attributeType, targetType, attributePropertyName }));
                }
                else
                {
                    return pi.GetValue(att, null).ToString();
                }
            }
            else
            {
                throw new Exception(String.Format("The {0} attribute isn't set to the type {1}", new object[] { attributeType, targetType }));
            }
        }

        internal bool isAttributeTrue(Type targetType, Type attributeType, string attributePropertyName)
        {
            if (Attribute.IsDefined(targetType, attributeType))
            {
                Object att = Attribute.GetCustomAttribute(targetType, attributeType);
                PropertyInfo pi = att.GetType().GetProperty(attributePropertyName);
                if (pi == null)
                {
                    return false;
                }
                else
                {
                    return Convert.ToBoolean(pi.GetValue(att, null));
                }
            }
            else
            {
                return false;
            }
        }
    }
Abgelegt unter Attributes, Attribute, Laufzeit.

2 Kommentare zum Snippet

yoka schrieb am 17.05.2008:
Zur Laufzeit ist das ja ganz nett -no offense- aber zur Compile Zeit Attributes abzufragen ist viel spannender! Damit könnte man den eigenen Code endlich in Stufe 2 Grammatiken umwandeln, oder zumindest pre/post conditions definieren! Das wär n echter Hammer!
Rainer Schuster schrieb am 21.05.2008:
@Yoka: Dann schau dir mal PostSharp an.
 

Logge dich ein, um hier zu kommentieren!