Как определить поведение индексатора для интерфейса? - PullRequest
25 голосов
/ 06 марта 2012

Можно ли добавить поведение индексатора из интерфейса?

как то так:

interface IIndexable<T>
{
   T this[string index];
}

Ответы [ 3 ]

34 голосов
/ 06 марта 2012

Да, это возможно.Фактически, все, что вам не хватает, - это метод получения / установки вашего индексатора.Просто добавьте его следующим образом:

interface IIndexable<T>
{
     T this[string index] {get; set;}
}
11 голосов
/ 06 марта 2012

С MSDN :

public interface ISomeInterface
{
    //...

    // Indexer declaration:
    string this[int index]
    {
        get;
        set;
    }
}

Индексаторы могут быть объявлены в интерфейсе (C # Reference). Средства доступа Интерфейсные индексаторы отличаются от методов доступа индексаторов классов в следующие способы:

  • Интерфейсные средства доступа не используют модификаторы.
  • Интерфейс доступа к интерфейсу не имеет тела.
2 голосов
/ 18 октября 2015

Немного более универсальный интерфейс (взятый из IDictionary<,>) будет выглядеть следующим образом:

interface IIndexable<TKey, TValue>
{
    TValue this[TKey key] { get; set; }
}

Мне только интересно, почему они не включили его в mscorlib, чтобы IDictionary мог реализовать его.Это имело бы смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...