Ваш метод расширения не является универсальным, но должен быть, так как методы расширения должны быть определены в неуниверсальных классах верхнего уровня. Вот тот же код после того, как я сделал его универсальным методом:
// Note the type parameters after the method name
public static void AddIfNotPresent<TKey, TValue>
(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value)
{
if (!dictionary.ContainsKey(key))
{
dictionary.Add(key, value);
}
}
Однако попытка скомпилировать код, который вы действительно разместили, приводит к сообщению об ошибке, отличному от указанного вами. Это говорит о том, что вы не опубликовали реальный код ... и поэтому вышеизложенное может не исправить ситуацию в любом случае. Тем не менее, код, который вы разместили с вышеуказанным изменением, работает нормально.