c# - 如何从对象访问值
问题描述
我需要从对象访问值,我的代码如下,
public class ValidationResult
{
public string ErrorType { get; set; }
public string ErrorMessage { get; set; }
public object AdditionalData { get; set; }
}
这就是我从 Stoted 过程中设置值的方式(请注意,我的代码的这一部分)
public ValidationResult GetCustomer(int lobbyId, string serviceId)
{
DataSet cusInfo = DataAccessManager.ExecuteStoredProcedure("spCustomerEntry", parameters.ToArray());
ValidationResult valResult = new ValidationResult();
valResult.AdditionalData = new
{
AppointmentData = cusInfo.Tables[0].AsEnumerable().Select(accData => new { CosId = Convert.ToInt32(accData["CosId"]), CosRefNo = Convert.ToInt32(accData["CosRefNo"])})
};
return valResult;
}
我正在GetCustomer
从另一个类调用此方法,并且需要获取CosId,CosRefNo
值。我正在尝试这样做。但它会犯一些错误。我怎样才能得到CosId
ValidationResult validationResult = null;
validationResult = ltsLob.GetCustomer(lobbyId, serviceId);
var CosId = validationResult.AdditionalData.GetType().GetProperty("CosId").GetValue(validationResults.AdditionalData, null);
解决方案
在 GetCustomer 方法中,将现有代码替换为以下代码。我所做的唯一更改是最后添加了“ToList”方法。
valResult.AdditionalData = new
{
AppointmentData = dsResult.Tables[0].AsEnumerable().Select(accData => new { CosId = Convert.ToInt32(accData["CosId"]), CosRefNo = Convert.ToInt32(accData["CosRefNo"])}).ToList()
};
您可以访问该对象的数据,如下所示。
var data = result.AdditionalData.GetType().GetProperty("AppointmentData").GetValue(result.AdditionalData, null);
foreach(var item in (IList)data) {
Console.WriteLine(item);
}
这是提琴手。试试看。 https://dotnetfiddle.net/RE7tvH
推荐阅读
- batch-file - 我试图创建一个字符计数器,但我最终得到了这个
- css - 为什么我在网格行中有额外的空间?
- c - 为什么 strcmp 不能与 Process32NextW 一起使用?
- python - 在 mapreduce 上运行作业会产生错误代码 1
- vb.net - vb.net 中从 Form1.Chart1 到 Report.rdlc
- javascript - 如何在array_column php中输入确认框
- python - MAC OS - os.system(command) 什么都不显示
- firebase - Cloud Firestore 中的 Flutter Query 3rd Level Collection
- html - 浮动元素位置更改元素对齐方式
- javascript - 根据周围的 div 设置 Flask wtforms Textarea 的大小