Wie kann ich einen benutzerdefinierten Indexer über eine ReadOnlyCollection implementieren?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie kann ich einen benutzerdefinierten Indexer über eine ReadOnlyCollection implementieren?

Post by Guest »

Bedenken Sie Folgendes: Ich möchte eine schreibgeschützte Liste verfügbar machen.

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);
}
}
Ich kann jedoch nur über den int-Indexer auf diese schreibgeschützte Liste zugreifen

Code: Select all

Zoo z = new Zoo();
z.AddAnimal(new Animal() { Name = "Lion"});
var animal = z.Animals[0];
Wie kann ich einen benutzerdefinierten Indexer anhand einer Zeichenfolge erstellen (d. h. anhand des Tiernamens nachschlagen)?

Ich bevorzuge die Verwendung eines Wörterbuchs.

Code: Select all

var animal = z.Animals["Lion"];
Ich habe es mit einer benutzerdefinierten Liste versucht, kann diese jedoch nicht in ReadOnlyCollection:
umwandeln

Code: Select all

public class Animals : List
{

public Animal this[string name]
{
get
{

return (Animal)this.Where(x => x.Name == name);
}
}

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post