Я думаю, что вы хотите:
public interface ICookieService2<T>: IDictionary<string, CookieData<T>>
{
// ...
}
В настоящее время ICookieService2 не является универсальным, поэтому T не определено.
Это позволяет создавать классы * ICookieService2<string>
или ICookieService2<int>
и т. Д.
EDIT:
Отвечая на ваш последний запрос, я думаю, что это действительно зависит от того, что именно вам нужно. Тем не менее, что-то вроде этого может работать для вас.
public interface ICookieData
{
object Value {get;} // if you need to be able to set from CookieService, life gets harder, but still doable.
DateTime Expires {get;}
}
public struct CookieDate<T> : ICookieData
{
T Value {get;set;}
DateTime Expires {get;set;}
object ICookieData.Value
{
get
{
return Value;
}
}
}
Тогда CookieService может быть или иметь Список, и вы сможете добавлять и CookieData, и CookieData. Если вам нужно написать (установить) из CookieService, его немного сложнее, и, возможно, лучше не использовать дженерики. Но если вам просто нужно получить CookieData, это может сработать для вас.