遍历对象中的对象属性
Loop through objects properties in an object
我有一个像下面这样的对象
public class MainObj
{
public int BankDetailPercentage { get; set; }
public int PersonalDetailPercentage { get; set; }
public BankDetail BankDetail { get; set; }
public PersonalDetail PersonalDetail { get; set; }
}
public class BankDetail
{
public string Name { get; set; }
public string Branch { get; set; }
public string AccountNumber { get; set; }
}
public class PersonalDetail
{
public string Name { get; set; }
public string address { get; set; }
}
我需要遍历 MainObj 对象并找出填充了多少 BankDetail 和 PersonalDetail 对象的属性,在此基础上我应该在 MainObj 对象的 BankDetailPercentage 和 PersonalDetailPercentage 字段中设置填充属性的百分比 return 它。我怎样才能做到这一点,我已经在下面尝试过但无法做到这一点
public MainObject calculatePercentage(MainObject mainObject)
{
int bdCount = 0, pdCount = 0, bdTotal = 3, pdTotal = 2;
PropertyInfo[] properties = typeof(MainObject).GetProperties();
foreach (var property in properties)
{
var value = property.GetValue(mainObject);
if (property.Name == "BankDetail")
{
//
}
}
return mainObject;
}
首先,您需要获取相关对象的实例(您已在上面的代码中完成此操作。
var value = property.GetValue(mainObject);
然后您需要计算该对象中包含多少个属性。为此,我们需要先获取属性。
var subProperties = property.PropertyType.GetProperties();
var propertyCount = subProperties.Length;
现在我们需要检查每个属性以查看是否设置了值。
var populatedCount = 0;
foreach (var subProperty in subProperties)
{
if (!string.IsNullOrEmpty(subProperty.GetValue(value)))
{
populatedCount++;
}
}
然后取百分比。
var percentage = (float)populatedCount / propertyCount;
我有一个像下面这样的对象
public class MainObj
{
public int BankDetailPercentage { get; set; }
public int PersonalDetailPercentage { get; set; }
public BankDetail BankDetail { get; set; }
public PersonalDetail PersonalDetail { get; set; }
}
public class BankDetail
{
public string Name { get; set; }
public string Branch { get; set; }
public string AccountNumber { get; set; }
}
public class PersonalDetail
{
public string Name { get; set; }
public string address { get; set; }
}
我需要遍历 MainObj 对象并找出填充了多少 BankDetail 和 PersonalDetail 对象的属性,在此基础上我应该在 MainObj 对象的 BankDetailPercentage 和 PersonalDetailPercentage 字段中设置填充属性的百分比 return 它。我怎样才能做到这一点,我已经在下面尝试过但无法做到这一点
public MainObject calculatePercentage(MainObject mainObject)
{
int bdCount = 0, pdCount = 0, bdTotal = 3, pdTotal = 2;
PropertyInfo[] properties = typeof(MainObject).GetProperties();
foreach (var property in properties)
{
var value = property.GetValue(mainObject);
if (property.Name == "BankDetail")
{
//
}
}
return mainObject;
}
首先,您需要获取相关对象的实例(您已在上面的代码中完成此操作。
var value = property.GetValue(mainObject);
然后您需要计算该对象中包含多少个属性。为此,我们需要先获取属性。
var subProperties = property.PropertyType.GetProperties();
var propertyCount = subProperties.Length;
现在我们需要检查每个属性以查看是否设置了值。
var populatedCount = 0;
foreach (var subProperty in subProperties)
{
if (!string.IsNullOrEmpty(subProperty.GetValue(value)))
{
populatedCount++;
}
}
然后取百分比。
var percentage = (float)populatedCount / propertyCount;