可以在C#中动态访问对象属性吗?我似乎想不出一个办法。VS似乎每次都对我大喊大叫。
下面是我想要做的事情的一个例子。
所以我们有两个对象,我们称它为car。
Car CAR1 = new Car();
Car CAR2 = new Car();现在假设我在一个名为myArray的数组中有CAR1和CAR2;
int count = myArray.length.所以这就是问题所在,我希望能够循环通过数组,能够访问对象属性的。
E.g
for (int i =0; i < count; i++)
{
myArry[i].GetProperty;
myArry[i].GetProperty2;
myArry[i].GetProperty3;
}然而,上面的VS没有。有没有什么我可以完成的?
发布于 2011-04-22 01:28:49
会不会是你在myArray中漏掉了一个"a“
发布于 2011-04-22 01:48:25
你在这里需要的是使用反射,这看起来是如此明显吗?如果不是,我根本就不明白这个问题...
以防……
要获取属性,请使用
var t = typeof(Car);//get the type "Car"
var carProperties = t.GetProperties();//get all the public instance properties of the Car type
var property01 = t.GetProperty("MyPropertyOne");//get a PropertyInfo for the public instance property "MyPropertyOne" of the type "Car"然后,如果您想要动态获取每个汽车对象的值:
for (int i =0; i < count; i++)
{
var property01 = t.GetProperty("MyPropertyOne");
var propertyOneValue = property01.GetValue(myArry[i],null);
Console.WriteLine(propertyOneValue);
var property02 = t.GetProperty("MyPropertyTwo");
var propertyTwoValue = property02 .GetValue(myArry[i],null);
Console.WriteLine(propertyTwoValue);
//And so on...
}如果碰巧这就是您要找的,请注意使用反射(至少以这样一种粗鲁的方式)比直接访问对象属性慢得多
发布于 2011-04-22 01:35:02
如果没有实际的代码或你得到的错误,就不可能确定,但你可能不能访问一个属性而不对它做任何事情。Console.WriteLine(myArray[i].GetProperty);能工作吗?
https://stackoverflow.com/questions/5747576
复制相似问题