在接口中使用泛型

Dan*_*ite 5 c# generics collections interface

如何允许我CookieData在以下代码中具有通用性?我在声明中遇到编译时错误ICookieService2.

public struct CookieData<T>
{
    T Value { get; set; }
    DateTime Expires { get; set; }
}

public interface ICookieService2: IDictionary<string, CookieData<T>>
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

我的错误是:

找不到类型或命名空间名称"T"(您是否缺少using指令或程序集引用?)

我想要ICookieService2将通用数据插入其中.谢谢!

编辑不会把我锁定为一个单独T的构建任何ICookieService2

编辑2我想要做的是以下内容:

CookieData<int> intCookie = { Value = 27, Expires = DateTime.Now };
CookieData<string> stringCookie = { Value = "Bob", Expires = DateTime.Now };

CookieService2 cs = new CookieService2();
cs.Add(intCookie);
cs.Add(stringCookie);
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 7

看起来你有三个选择

使ICookieService2通用

public interface ICookieService2<T> : IDictionary<string, CookieData<T> {
...
}
Run Code Online (Sandbox Code Playgroud)

为CookieData创建一个非泛型基类,并在界面中使用它

public interface ICookieData {}
public class CookieData<T>: ICookieData{}
public interface ICookieService2 : IDictionary<string, ICookieData> {}
Run Code Online (Sandbox Code Playgroud)

选择一个具体的实现

public interface ICookieService : IDictionary<string, CookieData<int>> {}
Run Code Online (Sandbox Code Playgroud)