C#将对象名称作为字符串

时间:2013-07-25 10:01:13

标签: c# object

我有一个名为'Account'的对象和以下代码:

Account objAcc = new Account();
objAcc.Name = "Test";

正如预期的那样,上述工作正常。我现在有一个值列表如下:

string props = "Name,Address,Telephone";

现在,我想要做的是查看该列表中是否存在“名称”。我只有使用的对象(硬编码case语句等不可能,因为对象是动态的),所以从objAcc.Name,我不知何故需要从中得到“Name”,然后看看它是否在列表。

在此先感谢,我希望它足够清楚,

戴夫

2 个答案:

答案 0 :(得分:2)

你可以使用反射:

var properties = objAcc.GetType().GetProperties();
foreach(var property in properties)
{
  if(props.Contains(property.Name))
  {
     //Do you stuff
  }
}

答案 1 :(得分:1)

string test = objAcc.GetType().GetProperty("Name") == null ? "" : objAcc.GetType().GetProperty("Name").Name;
bool result = "Name,Address,Telephone".Split(',').Contains(test);

如果您愿意,可以使用以下方法:

public bool PropertyExists<T>(string propertyName, IEnumerable<string> propertyList,T obj)
{
    string test = obj.GetType().GetProperty(propertyName) == null ? "" : obj.GetType().GetProperty(propertyName).Name;
    bool result = propertyList.Contains(test);
    return result;
}

Giannis