c# - C# LINQ 获取通用列表 T 的 id
问题描述
我有一个 this 函数,我想将其转换为通用函数。如何获取泛型类的 Id(或其他属性)?
public T GetById(Guid id)
{
string jsonFile = @"D:\StorageFile.txt";
var json = File.ReadAllText(jsonFile);
var items = JsonConvert.DeserializeObject<List<T>>(json);
return items.FirstOrDefault(x => x.Id == id); // error is here in Id
}
解决方案
你必须有一个BaseClass
或Interface
然后:
BaseClass
:
public class BaseClass
{
public Guid Id { get; set; }
}
还有你的通用方法:
public static T GetById<T>(Guid id) where T : BaseClass
{
string jsonFile = @"D:\StorageFile.txt";
var json = File.ReadAllText(jsonFile);
var items = JsonConvert.DeserializeObject<List<T>>(json);
return items.FirstOrDefault(x => x.Id == id);
}
推荐阅读
- reactjs - React.ReactType:JSX 元素类型“加载器”没有任何构造或调用签名
- callback - 如何在一段代码中设置多个 MQTT 回调并订阅多个主题?
- ruby-on-rails - Rails 网页显示了比输入更多的模型元素
- react-native - Mobx store 函数调用在另一个 Observer 组件中
- angular - 使用组件时是否可以访问组件变量?
- c++ - GCC & Clang - 使用内在函数在 Word 中查找第一个设置位
- mysql - 优化多次插入的存储过程
- prometheus - 默认值 Prometheus 标签
- c# - mdf localdb上的不同用户帐户授权
- javascript - 使用 CSS 自动滚动聊天框