Je coursKeyedCollection avec ENUM type de clé ne sera pas l'index par int
public class FooKeyedCollection : KeyedCollection<FooType,Foo>
{
}
public enum FooType
{
FooType1,
FooType2,
FooType3
}
public Foo
{
public FooType Type { get; set; }
public string Value { get; set; }
}
Lorsque j'ajouter des articles à mon FooKeyedCollection, je peux les indexer par FooType, mais lorsque je tente de les indexer int, int est interprété comme l'enum FooType. En conséquence, elle conduit à une erreur de confusion, à savoir
public static void main()
{
FooKeyedCollection fkc = new FooKeyedCollection();
Foo myFoo = new Foo();
myFoo.Type = FooType.FooType3;
myFoo.Value = "someValue";
foo.Add(myFoo);
Foo myFooByType = foo[FooType.FooType3];
Foo myFooByIndex = foo[0]; // <-- exception thrown here
}
Le résultat de l'exécution de ce code est une exception lorsque l'on tente d'extraire l'élément par l'indice entier. J'espère exposer le FooKeyedCollection dans le cadre d'une API publique, et je veux protéger les consommateurs de cette API de cette erreur. Est-il possible que je puisse modifier la classe FooKeyedCollection pour obtenir un comportement approprié?
Cela a fonctionné comme un champion, merci! – JadeMason