следующий код, используемый для работы в режиме vs2008:
namespace N2.Engine.Globalization
{
    public class DictionaryScope : Scope
    {
                object previousValue;
        public DictionaryScope(IDictionary dictionary, object key, object value)
            : base(delegate
            {
                if (dictionary.Contains(key))
                    previousValue = dictionary[key];
                dictionary[key] = value;
            }, delegate
            {
                if (previousValue == null)
                    dictionary.Remove(key);
                else
                    dictionary[key] = previousValue;
            })
        {
        }
    }
}
но теперь он сообщает, что для нестатического поля, метода или свойства требуется ссылка объекта. 'N2.Engine.Globalization.DictionaryScope.previousValue'
Кажется, что что-то изменилось в компиляторе? Любые обходные пути?
обновление:
относительно предложения использовать виртуальный метод. Возможно, это тоже не сработает, поскольку виртуальный метод будет вызван из базового конструктора, который, как мне кажется, также невозможен?
Вот реализация области действия (базовый класс):
public class Scope: IDisposable
    {
        Action end;
        public Scope(Action begin, Action end)
        {
            begin();
            this.end = end;
        }
        public void End()
        {
            end();
        }
        #region IDisposable Members
        void IDisposable.Dispose()
        {
            End();
        }
        #endregion
