将键值对加载到 c# 类
本文关键字:加载 键值对 | 更新日期: 2023-09-27 18:34:13
>编辑:
存储过程返回以下数据:
| Name | Value |
|---------|-----------|
| Member1 | someValue |
| Member2 | someValue |
我有一个类,其属性具有与数据库中的"名称"字段匹配的自定义属性
class example{
[CustomMapping(DBName="Member1",...)]
public string MyName1{get; set;}
[CustomMapping(DBName="Member2",...)]
public int MyName2{get; set;}
}
我有以下方法从数据库填充类:
public void LoadFromDataReader(IDataReader reader)
{
Type type = this.GetType();
PropertyInfo[] props = type.GetProperties();
foreach (PropertyInfo property in props)
{
CustomMappingAttribute mappingAttribute = (CustomMappingAttribute)Attribute.GetCustomAttribute(property, typeof(CustomMappingAttribute));
object val = null;
if (property.GetType() == typeof(string))
{
val = CustomObjectData.SafeRead<string>(mappingAttribute.DBName, reader, string.Empty);
}
else
{
val = CustomObjectData.SafeRead<int>(mappingAttribute.DBName, reader, int.MinValue);
}
property.SetValue(property, val);
}
}
我想从数据库中为每个属性分配其相应的值。上面的代码不会准确地做到这一点,因为每次调用 for 循环时都会覆盖一些属性LoadFromDataReader()
。
我该怎么做?
仅供参考:CustomObjectData.SafeRead 从数据库中读取字段名称并将其分配给属性。
SafeRead<T>(string fieldName, IDataReader reader, T defaultValue);
.
.
.
.
.
老问题:
我想创建一个从数据库填充的类。类成员及其值将从数据库中读取。
存储过程返回以下数据:
| Name | Value |
|---------|-----------|
| Member1 | someValue |
| Member2 | someValue |
现在我希望我的类从存储过程中读取/加载以下结构:
class example{
public string Member1{get; set;}
public string Member2{get; set;}
}
将始终返回一行,并且存储过程可以返回任意数量的键/值对。
这可能吗?有没有更好的方法?
我想这样做,因为我会将这个类序列化为 JSON。如果我的类结构正确,这变得微不足道。
我认为你可以做类似的事情
public class Example
{
public IEnumerable<string> Members { get; set; }
}
如果它们都是字符串,你可以使用这样的东西,如果没有,你可以使用 T 来制作这个泛型。
我希望这有帮助