我目前正在设计一个类库,该类库将向C#中的Web应用程序图形呈现引擎提供数据。我目前正在定义该库的接口。
我有一个IGraphData接口,我想使用访问高速缓存的服务来高速缓存,这称为IGraphDataCacheService,并具有设置和获取方法以在高速缓存中添加IGraphData对象以及从高速缓存中检索IGraphData对象。缓存服务将是单例。
我对实现此方法的正确方法感到困惑,因此只有一种缓存服务可以获取和设置通用IgraphData对象。
我想出了这个:
interface IGraphDataCacheService {
IGraphData<object> Get(string identifier);
void Set(IGraphData<object> graphData);}
或这个:
T Get<T, P>(string identifier) where T : IGraphData<P>;
void Set<T,P>(T graphData) where T : IGraphData<P>;
任何人都可以提供任何建议帮助吗?
谢谢
最佳答案
您为什么不只是使该接口通用?
interface ICacheService<T> {
T Get(string identifier);
void Set(T graphData);
}
如果需要,可以将T的类型约束为IGraphData类型,也可以将其编写为:
interface IGraphDataCacheService<T> {
IGraphData<T> Get(string identifier);
void Set(IGraphData<T> graphData);
}