gpt4 book ai didi

C# - 如何遍历对象的每个属性和值

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

我在 C# 中有以下 DTO

public class Customer
{
public int Id { get; set;}

public string Name { get;set;}

// & so on (say 25 properties)
}

我正在使用 DynmoDb 作为 Db(NoSql),将上述项目添加到 DynamoDb 表。这是我的方法的样子

 public async Task<bool> Add(Customer customer)
{
try
{
var res = await _dynamoClient.PutItemAsync(
tableName: _tableName, item: SetObject(customer)).ConfigureAwait(false);
return res.HttpStatusCode == System.Net.HttpStatusCode.OK
}
catch (Exception ex)
{
Logger.Log(ex, eventObj);
return false;
}
}

私有(private) SetObject() 方法:-

private Dictionary<string, AttributeValue> SetObject(Customer obj)
{
//DynamoDb - Using Low Level API
var attributes = new Dictionary<string,
AttributeValue> {
//Id
{
nameof(obj.Id),
new AttributeValue {
S = obj.Id
}
},
//Name
{
nameof(obj.Name),
new AttributeValue {
S = obj.Name.Trim()
}
},
};
return attributes;
}

这个私有(private)方法对我来说看起来很麻烦而且容易出错。我不想以这种方式逐一查找每个属性。

我在想是否有某种方法可以遍历所有属性并将 namevalue 分配给 Dictionary 集合

 var propsList = typeof(EventTO).GetProperties().Select(x => x.Name).ToList<string>();

这为我提供了所有属性名称,但如何从传递的客户类型对象中获取值和键。

谢谢!

最佳答案

你最好使用像这样的库 https://github.com/ServiceStack/PocoDynamo

这会完成所有映射工作,为您转换为所需的 dynamo 请求,因此您不必担心。

对于 Javascript,AWS 有 documentClient 库,可以使任务更容易。对于 .net,我们使用上述库。

//Configuration for client
var awsDb = new AmazonDynamoDBClient("keyId","key",
new AmazonDynamoDBConfig { ServiceURL="http://localhost:8000"});
var db = new PocoDynamo(awsDb);

//Create c# dto
var itemToSave = new Item();
itemToSave.Id = 1;
itemToSave.Name = "Test";

//Single line to save it
db.PutItem(itemToSave);

关于C# - 如何遍历对象的每个属性和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130564/

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