【发布时间】:2012-05-31 16:52:54
【问题描述】:
这是我第一次在 Stack Overflow 上发帖,希望我所做的一切都是正确的,你们可以提供帮助。
我想知道在 C# 中是否有一种方法可以访问属于某个类的静态变量,前提是仅给出类的类型。例如:
public class Foo
{
public static int bar = 0;
}
public class Main
{
public void myFunc(Type givenType)
{
int tempInt = ??? // Get the value of the variable "bar" from "Foo"
Debug.WriteLine("Bar is currently :" + tempInt);
}
}
// I didn't run this code through a compiler, but its simple enough
// that hopefully you should get the idea...
很难描述需要了解这一点的背景,但我正在使用 XNA 制作游戏,并且我正在尝试使用引用计数来降低设计的复杂性。我在游戏中有物体和可以应用效果的道具(留在物体上)。能量提升可能会消失,但它们的影响仍然会留在对象上,我需要跟踪能量提升的任何影响是否仍然存在于对象上(因此,引用计数)。我计划用一个静态整数创建一个“PowerUpEffect”类(针对每种类型的加电),以保存仍然受它影响的对象的数量,但是游戏其余部分的设计不能很好地传递 PowerUpEffect一直到对象调用 PowerUpEffect 类的方法。
我希望只传递 PowerUpEffect 的类型(使用类似“typeOf()”之类的东西)并使用该类型来引用属于这些类型的静态变量,但我不知道该怎么做,或者它是否可能.
我很乐意找到不直接回答这些问题但以简单而优雅的设计解决问题的变通方法。 =)
帮助! (谢谢!)
【问题讨论】:
-
反射会在这里得到你想要的,但是不要像这样使用反射,你可能想考虑使用单例模式。
标签: c# xna reference-counting