Ответ 1
Да, это возможно. Фактически, все, что вам не хватает, это getter/setter на вашем индексере. Просто добавьте его следующим образом:
interface IIndexable<T>
{
T this[string index] {get; set;}
}
Можно ли добавить поведение индексатора из интерфейса?
что-то вроде этого:
interface IIndexable<T>
{
T this[string index];
}
Да, это возможно. Фактически, все, что вам не хватает, это getter/setter на вашем индексере. Просто добавьте его следующим образом:
interface IIndexable<T>
{
T this[string index] {get; set;}
}
От MSDN:
public interface ISomeInterface
{
//...
// Indexer declaration:
string this[int index]
{
get;
set;
}
}
Индексаторы могут быть объявлены на интерфейсе (С# Reference). Аксессуар индексаторы интерфейса отличаются от аксессуаров индексаторов классов в следующими способами:
- Аксессоры интерфейса не используют модификаторы.
- Аксессуар интерфейса не имеет тела.
Более общий общий интерфейс (взятый из IDictionary<,>
):
interface IIndexable<TKey, TValue>
{
TValue this[TKey key] { get; set; }
}
Мне просто интересно, почему они не включили его в mscorlib, так что IDictionary мог его реализовать. Это имело бы смысл.