首页 > 解决方案 > 如何从对象访问值

问题描述

我需要从对象访问值,我的代码如下,

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);

标签: c#object

解决方案


在 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


推荐阅读