Iterieren ueber Objektattribute



  • Hey,

    gibt es vielleicht eine Moeglichkeit ueber die Attribute eines Objektes zu iterieren.
    Hier mal ein Beispiel, wie ich es meine:

    class Image
        {
            public int ID = 0;
            public string Filename = "Test";
        }
    
        static class Comparator
        {
            /*
             * Gibt zurueck ob zwei Bilder die gleichen Werte enthaelt
             */
            static bool compare(Image img1, Image img2)
            {
                // Wie kann ich ueber die public Attribute der Images iterieren und Vergleich
    
                // Hier die umstaendliche Variante
                if (img1.ID == img2.ID &&
                    img1.Filename == img2.Filename)
                {
                    return true;
                }
                else
                    return false;
            }
        }
    

    Image enthaelt aber in Wirklichkeit noch viel mehr Attribute. Moechte nun nicht jedes in der Form wie oben aufschreiben, d.h. umstaendlich.
    Habt ihr eine Idee? Gibt es da eine Moeglichkeit?



  • Das Stichwort was du suchst heißt Reflection.



  • Zum rumspielen:

    class Image
    {
    	public int ID = 0;
    	public string Filename = "Test";
    	public double Pi { get; set; }
    }
    
    static void Main(string[] args)
    {
    	Image image = new Image { Pi = 3.1 };
    	Type type = typeof(Image);
    	foreach (var field in type.GetFields())
    		Console.WriteLine(field.GetValue(image));
    	foreach (var property in type.GetProperties())
    		Console.WriteLine(property.GetValue(image, null));
    }
    

Anmelden zum Antworten