Wie kann ich einen benutzerdefinierten Indexer über eine ReadOnlyCollection implementieren?
Posted: 07 Jan 2025, 12:30
Bedenken Sie Folgendes: Ich möchte eine schreibgeschützte Liste verfügbar machen.
Ich kann jedoch nur über den int-Indexer auf diese schreibgeschützte Liste zugreifen
Wie kann ich einen benutzerdefinierten Indexer anhand einer Zeichenfolge erstellen (d. h. anhand des Tiernamens nachschlagen)?
Ich bevorzuge die Verwendung eines Wörterbuchs.
Ich habe es mit einer benutzerdefinierten Liste versucht, kann diese jedoch nicht in ReadOnlyCollection:
umwandeln
Code: Select all
public class Animal
{
public string Name { get; set; }
}
public class Zoo
{
private List _animals = new List ();
public ReadOnlyCollection Animals => _animals.AsReadOnly();
public void AddAnimal(Animal animal)
{
_animals.Add(animal);
}
}
Code: Select all
Zoo z = new Zoo();
z.AddAnimal(new Animal() { Name = "Lion"});
var animal = z.Animals[0];
Ich bevorzuge die Verwendung eines Wörterbuchs.
Code: Select all
var animal = z.Animals["Lion"];
umwandeln
Code: Select all
public class Animals : List
{
public Animal this[string name]
{
get
{
return (Animal)this.Where(x => x.Name == name);
}
}
}