C#: Как может, Словарь <K, V> реализуют ICollection <KeyValuePair <K, V>> без наличия Добавляют (KeyValuePair <K, V>)?

Прежде всего, чтобы отправить данные с сервера на клиент, вам нужно будет запустить HTTP-сервер как часть вашего внутреннего узла. Затем, как только веб-приложение загрузится, оно должно сделать запрос на ваш сервер, который в ответ вернет данные из базы данных. Дополнительную информацию о том, как это сделать, можно найти в Express (для стороны сервера) и Fetch API (для стороны клиента).

11
задан SW4 24 April 2014 в 08:09
поделиться

3 ответа

Ожидаемый API должен добавить через два аргумента Add(key,value) метод (или this[key] индексатор); как таковой, это использует явную интерфейсную реализацию для обеспечения Add(KeyValuePair<,>) метод.

Если Вы используете IDictionary<string, int> интерфейс вместо этого, у Вас будет доступ к отсутствующему методу (так как Вы ничего не можете скрыть в интерфейсе).

Кроме того, с инициализатором набора обратите внимание, что можно использовать альтернативный синтаксис:

Dictionary<string, int> PropertyIDs = new Dictionary<string, int> {
  {"abc",1}, {"def",2}, {"ghi",3}
}

который использует Add(key,value) метод.

18
ответ дан 3 December 2019 в 03:37
поделиться

Некоторые методы интерфейса реализованы явно. При использовании отражателя, Вы видите явно реализованные методы, которые являются:

void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> keyValuePair);
bool ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue> keyValuePair);
void ICollection<KeyValuePair<TKey, TValue>>.CopyTo(KeyValuePair<TKey, TValue>[] array, int index);
bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> keyValuePair);
IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator();
void ICollection.CopyTo(Array array, int index);
void IDictionary.Add(object key, object value);
bool IDictionary.Contains(object key);
IDictionaryEnumerator IDictionary.GetEnumerator();
void IDictionary.Remove(object key);
IEnumerator IEnumerable.GetEnumerator();
9
ответ дан 3 December 2019 в 03:37
поделиться

Это не реализует ICollection<KeyValuePair<K,V>> непосредственно. Это реализует IDictionary<K,V>.

IDictionary<K,V> происходит из ICollection<KeyValuePair<K,V>>.

0
ответ дан 3 December 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: