Я настраиваю этот фиктивный объект сеанса из примера здесь: Как выполнить 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; }
}
}
примечание: этот фиктивный сеанс будет хранить только строки, а не объекты.