【发布时间】:2016-03-10 12:49:02
【问题描述】:
假设我有 2 节课:
第 1 类:
public class Class1
{
public static string Test = "Class1";
}
第二类:
public class Class2
{
public static string Test = "Class2";
}
现在在我的主窗体中,我有一个对象数组:
object[] Objects = new object[2];
Objects[0] = new Class1();
Objects[1] = new Class2();
现在说我想从object[0] 获取Test 字符串
我将如何检索它?
我试过了
Objects[0].GetType().GetProperty("Test"); //Returns a NullReference
【问题讨论】:
-
将其转换为
Class1或使用继承和多态。让两个类继承相同的基类或实现具有属性Test的相同接口。然后创建一个此类/接口的数组,您可以在不强制转换的情况下访问此属性。 -
Class1.Test和Class2.Test?它们是静态属性,您不需要对象来访问它们。您可以使用类名直接访问它们。 -
@TimSchmelter
Test是static,所以没有继承/多态性... -
@xanatos:是的,它们是字段。但这只是一个例子。也许它们是意外静态的。我只是想为 OP 提供另一种看待事物的方式。反射应该是最后的手段,并且经常被滥用来解决如果您了解 OOP 的概念就不应该存在的问题。此外,现在不应该经常需要使用
Object作为类型。