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)
看起来你有三个选择
使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)