c# - 如果 get 函数中不存在键值对,如何创建它?
问题描述
我有一个 get api,如下所示:
bool GetValue<T>(string key, out T value);
如果值存在,则返回,value
函数返回true。否则,value
设置为default(T)
并且函数返回 false。
同样,我有 set api:
bool SetValue<T>(string key, T value);
因此,目前我正在使用这个:
var exists = GetValue<Details>(@"ProductDetails", out var result);
if (!exists)
{
_details = new Details();
SetValue(@"ProductDetails", _details);
}
else
{
_details = result;
}
我想创建一个在一行中执行此操作的函数。也就是说,如果该值不存在,它会使用给定的参数创建一个新值并将其存储。
我怎样才能做到这一点 ?
解决方案
private T GetOrCreate<T>(string tableName)
where T : new()
{
T result;
var exists = GetValue<T>(tableName, out result);
if (!exists)
{
result = new T();
SetValue(tableName, result);
}
return result;
}
应该这样做,使用通用约束来确保T
.
推荐阅读
- node.js - React-Router 可以直接指向使用 Express 定义的路由而不是渲染组件吗?
- machine-learning - 在 sklearn 中运行管道时出现 PicklingError
- reactjs - 在 React Native Navigation 中处理页面转换
- docker - ansible docker_compose 网络
- node.js - Electron: How to import or include CSS installed using npm package manager in our index.html?
- git - git pull 后如何获取未提交的文件?
- php - 无法通过在线聊天频道进行身份验证(客户端无法通过身份验证,获得 HTTP 状态 403)Laravel Echo 服务器
- android - 无法绑定到本地 8600 用于 Android Studio 中的调试器
- algorithm - 查找树中所有可能的路径
- c - C 编程:十进制到十六进制