スタック オーバーフローに投稿するのはこれが初めてです。
クラスの型だけが与えられたときに、クラスに属する静的変数にアクセスする方法が 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()」のようなものを使用) のみを渡し、その型を使用してそれらの型に属する静的変数を参照することを望んでいますが、それを行う方法やそれが可能かどうかさえわかりません。
この質問に直接答えるのではなく、シンプルでエレガントなデザインで問題を解決する回避策を見つけていただければ幸いです。=)
ヘルプ!(ありがとう!)