Laden...

AssemblyAttribute, Werte abfragen ?

Erstellt von Hans Damf 37 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.436 Views
Hans Damf 37 Themenstarter:in
149 Beiträge seit 2007
vor 16 Jahren
AssemblyAttribute, Werte abfragen ?

Hallo,
so wieder ein neues Kapitel 8o...

Also, was habe ich:


Assembly assy1 = Assembly.GetCallingAssembly();

object[] o = assy1.GetCustomAttributes(false);

foreach (Attribute att in o)
{
Console.WriteLine("Attributname: {0}",att.GetType().Name,);
}

Das ganze ermöglicht mir ja herauszulesen, welche Attribute gesetzt sind.
Nun will ich aber auch wissen, was drin steht... wenn ich das "per Hand" mache, sieht das so aus:


AssemblyDescriptionAttribute test = new AssemblyDescriptionAttribute("Das ist ein Test");
Console.WriteLine( test.Description);

AssemblyFileVersionAttribute test1 = new AssemblyFileVersionAttribute("1.2.3.4");
Console.WriteLine(test1.Version);

Nun hab ich aber das Problem, das ich für alle Attribute auch den Inhalt zurückbekomme, nur ist das bei jedem Attribute anders, wie man oben sieht für DescriptionAttribute ist es Description und für FileVersionAttribute ist es Version.

Nun hab ich natürlich keine Lust, jedes einzelne Attribute durchzugehen, ob es gesetzt ist und dann den passenden Aufruf zustarten... WEIL ich doch hoffe, das es so was gibt wie attribute.value... nur hab ich bisher nichts passendes gefunden.

Hoffe ist verständlich was ich will 🤔

Gruß

HD

Man lernt auch im Alter nie aus

Mit 37 Fachinformatiker
Mit 38 (im August) Programmierer

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Hans Damf 37,

da Attribute beliebige Properties haben können, deren Bedeutung man nicht im Vornherein alle kennen kann, wüsste ich nicht, wie das gehen soll. Und einfach alle Properties auszugeben, ist denke ich, auch keine Lösung. Vielleicht kommt bei ToString was sinnvolles zurück. Ansonsten sehe ich erstmal keinen sinnvollen Weg.

herbivore

F
722 Beiträge seit 2005
vor 16 Jahren

hallo,

du musst schon auf den jeweiligen typ des attributs casten um die daten ausgeben zu können.


            Assembly assy1 = Assembly.GetCallingAssembly();

            object[] o = assy1.GetCustomAttributes(false);

            foreach (Attribute att in o)
            {
                if (att is AssemblyDescriptionAttribute)
                {
                    Console.WriteLine(((AssemblyDescriptionAttribute)att).Description);
                }            
            }

Hans Damf 37 Themenstarter:in
149 Beiträge seit 2007
vor 16 Jahren

Also ist es doch so...hmmm

Schade, ich dachte, ich hätte nur noch nichts gefunden. 8o

Und das ich jedes Attribute abfrage ist klar, aber gerade das wollte ich ja umgehen, das ich nicht für alle 10-20 Attribute eine extra Abfrage starte, zumal ich das dann natürlich über ein switch machen würde, bisschen hab ich ja nun schon gelernt. 😁

Aber trotzdem danke

HD

Man lernt auch im Alter nie aus

Mit 37 Fachinformatiker
Mit 38 (im August) Programmierer