私は次のものを持っています:
[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の動作を複製するにはどうすればよいですか?