我目前正在设计一个类库,该类库将向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);
}

10-08 16:04