gpt4 book ai didi

c# - 将 List 作为接口(interface)上的属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:02 27 4
gpt4 key购买 nike

我正在尝试为缓存类创建一个接口(interface),如下所示:

public interface IDataCacheMember
{
private List<T> _data;
public List<T> Data;

private void RefreshCache();
private List<T> GetData();
}

public class StateMap : IDataCacheMember
{
private List<States> _data;
public List<States> Data
{
get
{
if (_data == null || _data.Count() < 1)
_data = GetData();

return _data;
}
}

private void RefreshCache()
{
_data = GetData();
}

private List<States> GetData()
{
//API Magic to get states
}

private static readonly Lazy<StateMap> lazy =
new Lazy<StateMap>(() => new StateMap());

public static StateMap Instance { get { return lazy.Value; } }

private StateMap()
{
//Set a timer to call RefreshCache() every five minutes
}
}

目标是在网站的大量小型数据集上保存对 API 的调用。这些数据集不需要精确到最新。

没有空间使用适当的缓存服务(Redis 等)。

问题是我找不到为 _dataData 的返回类型定义通用列表的方法。

实现我的目标的最佳方式是什么?我可以为 _dataData 设置一个通用的返回类型吗?或者我应该使用另一种更好的模式吗?

最佳答案

如果将接口(interface)本身设为通用,则可以在接口(interface)上拥有通用属性:

public interface IDataCacheMember<T>
{
List<T> Data { get; }
}

并将其与类型参数一起使用:

public class StateMap : IDataCacheMember<States>
{
// ...
}

注意:接口(interface)上不能有私有(private)成员。这没有意义,因为接口(interface)仅描述了向外契约(Contract)。您可能想改用抽象类。

关于c# - 将 List<T> 作为接口(interface)上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com