Có thể thêm hành vi chỉ mục từ giao diện không?Cách xác định hành vi của Trình lập chỉ mục đối với Giao diện?
một cái gì đó như thế này:
interface IIndexable<T>
{
T this[string index];
}
Có thể thêm hành vi chỉ mục từ giao diện không?Cách xác định hành vi của Trình lập chỉ mục đối với Giao diện?
một cái gì đó như thế này:
interface IIndexable<T>
{
T this[string index];
}
Vâng, đó là có thể. Trong thực tế, tất cả các bạn đang mất là getter/setter trên indexer của bạn. Chỉ cần thêm nó như sau:
interface IIndexable<T>
{
T this[string index] {get; set;}
}
Từ MSDN:
public interface ISomeInterface
{
//...
// Indexer declaration:
string this[int index]
{
get;
set;
}
}
Indexer thể được khai báo trên một giao diện (C# tham khảo). Accessors của indexers giao diện khác với accessors của indexers lớp trong cách sau: accessors
- Interface không sử dụng từ bổ nghĩa.
- Trình truy cập giao diện không có phần thân.
Một chút giao diện chung chung hơn (lấy từ IDictionary<,>
), sẽ là:
interface IIndexable<TKey, TValue>
{
TValue this[TKey key] { get; set; }
}
Tôi chỉ tự hỏi tại sao họ không bao gồm nó trong mscorlib, do đó IDictionary có thể thực hiện nó. Nó sẽ có ý nghĩa.