我有一个对象,它的属性包括字符串、整数和双精度。我有对象的三个实例:item1、item2、item 3。
我可以通过说 item1.name 等来打印出值。但是如何循环遍历对象并打印值?我认为我不能将对象转换为列表或数组,因为对象具有不同的类型 - 对吧?
如果你的意思是它们都是同一个类的实例,那么在这种情况下你可以做什么是非常基本的。如果是这种情况,您可以创建该类类型的列表。然后以您希望的任何方式迭代对象,您将能够打印出该类包含的任何公共属性。
var examples = new List<ExampleObject>()
{
new ExampleObject { ID = 1, Name = "Display" },
new ExampleObject { ID = 2, Name = "Display2" },
};
examples.ForEach(x => Console.WriteLine("id = {0}, name = {1}", x.ID, x.Name));
如果它们都具有“名称”属性,则可以创建一个包含该属性的接口。
public Interface IShowName
{
string Name { get; }
}
然后使每种类型都实现 IShowName (根据您的说法,他们已经这样做了)。然后您可以将它们全部放入 IShowName 列表中。
var myList = new List<IShowName>();
myList.Add(obj1);
myList.Add(obj2);
myList.Add(obj3);
foreach(var nameShower in myList)
{
System.Console.WriteLine(nameShower.Name);
}
您可以通过反射来做到这一点:
foreach (PropertyInfo propertyInfo in obj1.GetType().GetProperties())
{
//If property is public
if (propertyInfo.CanRead)
{
object propValue = propertyInfo.GetValue(obj1, null);
System.Console.WriteLine(propValue.ToString());
}
}