2

クラス内のすべての変数のリストを取得するにはどうすればよいですか。別のクラスで使用して、たとえば、どの変数が変更され、変更される可能性があるかを示します。これは主に、いくつかの変数が変更または追加されたときに列挙型を書き換える必要がないためです。

編集:変更可能ないくつかの統計 (メイン) を持つクラスと、変更可能なすべての統計のリストとその量のリストを持つ別のタイプのクラス (ModifyingObject) を作成したいと考えています。メインクラスの変数を簡単に取得し、変更クラスが変更する変数のリストを追加したいと考えています。たとえば、さまざまな統計に 10 個の変数がある場合、ModifyingObject クラスが Main クラスで変更できるすべての統計を簡単に一覧表示するにはどうすればよいでしょうか。

public class Main{

   float SomeStat = 0;
   string SomeName = "name";

   List<ModifyingObject> objects;

   bool CanModifyStatInThisClas(ModifyingObject object){
      //check if the custom object can modify stats in this class
   }

}

public class ModifyingObject{
  ....
}
4

1 に答える 1

6

反射を使用できます。

例:

class Foo {
    public int A {get;set;}
    public string B {get;set;}
}

...

Foo foo = new Foo {A = 1, B = "abc"};
foreach(var prop in foo.GetType().GetProperties()) {
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(foo, null));
}

ここから:クラスのプロパティのリストを取得するには?

プロパティには、興味のある属性 (プロパティ)CanReadCanWriteがあります。

ドキュメント: http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx

ただし、あなたの質問は少しあいまいです。これは最善の解決策ではないかもしれません...あなたが何をしているかに大きく依存します。

于 2013-04-10T21:01:00.010 に答える