the*_*rrs 2 c# generics interface
我目前正在设计一个类库,它将为C#中的Web应用程序图形呈现引擎提供数据.我目前正在定义这个库的接口.
我有一个IGraphData接口,我想使用访问缓存的服务进行缓存,这称为IGraphDataCacheService,并设置和获取方法来向缓存添加和检索IGraphData对象.缓存服务将是一个单身人士.
我对实现它的正确方法感到困惑,因此只有一个缓存服务可以获取和设置通用IgraphData对象.
我想出了这个:
interface IGraphDataCacheService {
IGraphData<object> Get(string identifier);
void Set(IGraphData<object> graphData);}
Run Code Online (Sandbox Code Playgroud)
或这个:
T Get<T, P>(string identifier) where T : IGraphData<P>;
void Set<T,P>(T graphData) where T : IGraphData<P>;
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供任何建议帮助吗?
谢谢
你为什么不把接口变成通用的呢?
interface ICacheService<T> {
T Get(string identifier);
void Set(T graphData);
}
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以键入约束T为IGraphData类型,或者你可以把它写成:
interface IGraphDataCacheService<T> {
IGraphData<T> Get(string identifier);
void Set(IGraphData<T> graphData);
}
Run Code Online (Sandbox Code Playgroud)