Heim > Backend-Entwicklung > C++ > Wie kann ich zur Laufzeit dynamische Eigenschaften in C# erstellen, sortieren und filtern?

Wie kann ich zur Laufzeit dynamische Eigenschaften in C# erstellen, sortieren und filtern?

Linda Hamilton
Freigeben: 2025-01-05 01:22:41
Original
569 Leute haben es durchsucht

How can I create, sort, and filter dynamic properties in C# at runtime?

Erstellen dynamischer Eigenschaften in C

Hinzufügen und Ändern dynamischer Eigenschaften

Um dynamische Eigenschaften in einer Klasse zur Laufzeit zu erstellen, können Sie ein Wörterbuch verwenden Speichern Sie Eigenschaftsnamen und -werte. Betrachten Sie den folgenden Code:

Dictionary<string, object> properties = new Dictionary<string, object>();
Nach dem Login kopieren

Mit diesem Wörterbuch können dynamische Eigenschaften für die Klasse definiert werden. Um beispielsweise eine dynamische Eigenschaft namens „test“ mit einem Wert von 100 hinzuzufügen, würden Sie schreiben:

properties["test"] = 100;
Nach dem Login kopieren

Dynamische Eigenschaften sortieren und filtern

Sobald Sie dynamische Eigenschaften erstellt haben, können Sie Sie können Ihren Objekten auch Sortier- und Filterfunktionen hinzufügen. Hier ist ein Beispiel für die Verwendung von LINQ zum Filtern:

var filtered = from obj in objects
             where (int)obj["test"] >= 150
             select obj;
Nach dem Login kopieren

Und hier ist ein Beispiel für die Verwendung eines benutzerdefinierten Vergleichers zum Sortieren:

Comparer<int> c = new Comparer<int>("test");
objects.Sort(c);
Nach dem Login kopieren

Beispielimplementierung

Das Folgende ist vollständig Das Codebeispiel demonstriert die Erstellung, Änderung, Sortierung und Filterung dynamischer Eigenschaften in C#:

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class ObjectWithProperties
    {
        Dictionary<string, object> properties = new Dictionary<string, object>();

        public object this[string name]
        {
            get
            {
                if (properties.ContainsKey(name))
                {
                    return properties[name];
                }
                return null;
            }
            set
            {
                properties[name] = value;
            }
        }
    }

    class Comparer : IComparer where T : IComparable
    {
        string m_attributeName;

        public Comparer(string attributeName)
        {
            m_attributeName = attributeName;
        }

        public int Compare(ObjectWithProperties x, ObjectWithProperties y)
        {
            return ((T)x[m_attributeName]).CompareTo((T)y[m_attributeName]);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // create some objects and fill a list
            var obj1 = new ObjectWithProperties();
            obj1["test"] = 100;
            var obj2 = new ObjectWithProperties();
            obj2["test"] = 200;
            var obj3 = new ObjectWithProperties();
            obj3["test"] = 150;
            var objects = new List(new ObjectWithProperties[] { obj1, obj2, obj3 });

            // filtering:
            Console.WriteLine("Filtering:");
            var filtered = from obj in objects
                           where (int)obj["test"] >= 150
                           select obj;
            foreach (var obj in filtered)
            {
                Console.WriteLine(obj["test"]);
            }

            // sorting:
            Console.WriteLine("Sorting:");
            Comparer c = new Comparer("test");
            objects.Sort(c);
            foreach (var obj in objects)
            {
                Console.WriteLine(obj["test"]);
            }
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit dynamische Eigenschaften in C# erstellen, sortieren und filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage