我从C#中的对象中提取了几个数据元素。它们都在对象内的相同“位置”,如:
objectContainer.TableData.Street.ToString());
objectContainer.TableData.City.ToString());
objectContainer.TableData.State.ToString());
objectContainer.TableData.ZipCode.ToString());
我想使用foreach循环将它们全部拉出来并通过添加到数组来添加更多。
string[] addressFields = new string[] { "Street", "City", "State", "ZipCode" };
foreach(string add in addressFields)
{
objectContainer.TableData.{add}.ToString());
}
可以这样做,如果是,那么正确的程序是什么?
答案 0 :(得分:3)
您需要使用反射来实现此目的:
var type = objectContainer.TableData.GetType();
foreach(var addressFieldName in addressFieldNames)
{
var property = type.GetProperty(addressFieldName);
if(property == null)
continue;
var value = property.GetValue(objectContainer.TableData, null);
var stringValue = string.Empty;
if(value != null)
stringValue = value.ToString();
}
请注意:此代码非常具有防御性:
null
,则不会崩溃。答案 1 :(得分:0)
您可以使用Reflection来执行此操作。
string[] addressFields = new string[] { "Street", "City", "State", "ZipCode" };
foreach(string add in addressFields)
{
var myVal = objectContainer.TableData.GetType().GetProperty(add).GetValue(objectContainer.TableData).ToString();
}
请注意,这不允许在objectContainer.TableData上没有相应属性的数组值。