Как я могу правильно смоделировать KeysCollection в HttpSessionStateBase?

Я настраиваю этот фиктивный объект сеанса из примера здесь: Как выполнить MOQ индексированного свойства

/// 
/// HTTP session mockup.
/// 
internal sealed class HttpSessionMock : HttpSessionStateBase
{
    private readonly Dictionary objects = new Dictionary();

    public override object this[string name]
    {
        get { return (objects.ContainsKey(name)) ? objects[name] : null; }
        set { objects[name] = value; }
    }
}

некоторый пример кода для выдачи ошибки ...

var mockSession = new HttpSessionMock();
var keys = mockSession.Keys;

Ошибка: Метод или операция не реализованы.

Мне нужно реализовать свойство Keys, но я не могу создать объект KeysCollection.

Как лучше всего это сделать?

РЕДАКТИРОВАТЬ: [РЕШЕНИЕ]

В итоге я изменил HttpSessionMock на основе полученного ответа. Вот что у меня получилось. (Я также добавил ссылку на System.Linq.)

internal sealed class HttpSessionMock : HttpSessionStateBase
{
    private readonly NameValueCollection objects = new NameValueCollection();

    public override object this[string name]
    {
        get { return (objects.AllKeys.Contains(name)) ? objects[name] : null; }
        set { objects[name] = (string)value; }
    }

    public override NameObjectCollectionBase.KeysCollection Keys
    {
        get { return objects.Keys; }
    }
}

примечание: этот фиктивный сеанс будет хранить только строки, а не объекты.

8
задан Community 23 May 2017 в 11:45
поделиться