私は次のものを持っています:
[Serializable()]
public struct ModuleStruct {
public string moduleId;
public bool isActive;
public bool hasFrenchVersion;
public string titleEn;
public string titleFr;
public string descriptionEn;
public string descriptionFr;
public bool isLoaded;
public List<SectionStruct> sections;
public List<QuestionStruct> questions;
}
これのインスタンスを作成してデータを入力します(質問に関係のないコンテンツ)。インスタンス化されたオブジェクトを1つのパラメーターとして受け取り、それをモジュールと呼び、このオブジェクトのタイプをもう1つのパラメーターとして受け取る関数がありますmodule.GetType()
。
この関数は、リフレクションを使用して、次のようになります。
FieldInfo[] fields = StructType.GetFields();
string fieldName = string.Empty;
Struct
関数のパラメーター名はとStructType
です。
内のフィールド名をループしStruct
、さまざまなフィールドの値と値を取得して、それを使用して何かを実行します。私が到達するまで、すべてが順調です:
public List<SectionStruct> sections;
public List<QuestionStruct> questions;
Struct
この関数は、 byのタイプのみを認識しStructType
ます。VBでは、コードは次のとおりです。
Dim fieldValue = Nothing
fieldValue = fields(8).GetValue(Struct)
その後:
fieldValue(0)
リストセクションの最初の要素を取得します。ただし、C#では、fieldValue
がオブジェクトであり、オブジェクトに対して実行できないため、同じコードは機能しませんfieldValue[0]
。
Struct
それで、私の質問は、関数がbyのタイプしか知らStructType
ないということですが、可能であれば、C#でVBの動作を複製するにはどうすればよいですか?