Я устанавливаю этот фиктивный объект сеанса из приведенного ниже примера: Как MOQ индексируемое свойство
/// <summary>
/// HTTP session mockup.
/// </summary>
internal sealed class HttpSessionMock : HttpSessionStateBase
{
private readonly Dictionary<string, object> objects = new Dictionary<string, object>();
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; }
}
}
примечание: в этом фиктивном сеансе будут храниться только строки, а не объекты.