C# - 如何只给出类类型的静态类变量?

Kei*_*A45 3 c# xna reference-counting

这是我第一次在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...
Run Code Online (Sandbox Code Playgroud)

很难描述需要知道这一点的背景,但我正在XNA中制作游戏,我正在尝试使用引用计数来降低设计的复杂性.我在游戏和强化中有对象可以应用它们(留在对象上).上电可能会死亡,但它们的影响仍然可以在物体上停留,我需要跟踪上电中是否有任何影响仍在物体上停留(因此,引用计数).我打算用一个静态整数制作一个"PowerUpEffect"类(对于每种类型的加电),保存仍然受其影响的对象数量,但是传递PowerUpEffect时游戏其余部分的设计效果不佳一直到对象,它调用PowerUpEffect类的方法.

我希望只传递PowerUpEffect的类型(使用类似"typeOf()"的东西)并使用该类型来引用属于这些类型的静态变量,但我不知道如何做或者甚至可能.

我很高兴甚至找到不能直接回答这些问题的解决方案,而是通过简单而优雅的设计解决问题.=)

救命!(谢谢!)

Mik*_*ney 5

如果您只有Type句柄,则可以执行以下操作:

var prop = givenType.GetProperty("bar");
var value = prop.GetValue(null);
Run Code Online (Sandbox Code Playgroud)