■質問事項
クラスの全メンバーにアクセスし、特定のフィールドの値のみ取得したいです。
メンバーへのアクセスはできたのですが、値の取得方法で詰まっています。
基本的なことかもしれませんが取得方法を教えていただけないでしょうか。
■プログラム
// 値を保持するクラスです
// 値のセットは別処理にて記載しています
public class SystemInfo
{
public class SettingInfo
{
public class KintoneInfo
{
public class ApiInfo
{
public string AppToken;
public string AppId;
}
public string DomainUrl;
public ApiInfo ApiUserMst;
public ApiInfo ApiTs;
public ApiInfo ApiTsBulk;
public ApiInfo ApiHolidayMst;
public ApiInfo ApiGenericMst;
public ApiInfo ApiGc;
public ApiInfo ApiInstruction;
public ApiInfo ApiTmWork;
public ApiInfo ApiReport;
public KintoneInfo()
{
ApiUserMst = new ApiInfo();
ApiTs = new ApiInfo();
ApiTsBulk = new ApiInfo();
ApiHolidayMst = new ApiInfo();
ApiGenericMst = new ApiInfo();
ApiGc = new ApiInfo();
ApiInstruction = new ApiInfo();
ApiTmWork = new ApiInfo();
ApiReport = new ApiInfo();
}
} }
}
// 上記クラスの値を取得するプログラムです。
private void test(object sender, EventArgs e)
{
MemberInfo[] infoArray = systemInfo.settingInfo.kintoneInfo.GetType().GetMembers();
foreach (MemberInfo info in infoArray) { if (info.MemberType.ToString().Equals("Field") && ((FieldInfo)info).FieldType.Name.Equals("ApiInfo")) { // ここで値ApiInfoの型を持つフィールドの値のみ取得したいです } }
}
■試してみたこと
((FieldInfo)info).GetValueではメンバがいないため取得できませんでした。
((FieldInfo)info).Nameでフィールド名は取れるので、systemInfo.settingInfo.kintoneInfo.((FieldInfo)info).Nameとやっても値がとれませんでした。
※単純にsystemInfo.settingInfo.kintoneInfo.ApiUserMstなどでは値が取れます
回答1件
あなたの回答
tips
プレビュー