入れ子クラスがプライベートでそのプライベートメンバ(TabPageInfoの
Visibleメンバ )をとりたいです。
クラスの構造は変更できません。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Reflection; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace ClassTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public class TabPageM { private class TabPageInfo { public TabPage TabPage; public bool Visible; public TabPageInfo(TabPage page, bool v) { TabPage = page; Visible = v; } } private TabPageInfo[] _tabP = null; private TabControl _tabC = null; public TabPageM(TabControl crl) { _tabC = crl; _tabP = new TabPageInfo[_tabC.TabPages.Count]; for (int i = 0; i < _tabC.TabPages.Count; i++) _tabP[i] = new TabPageInfo(_tabC.TabPages[i], true); } } private void button1_Click(object sender, EventArgs e) { TabControl tabControl; tabControl = new TabControl(); tabControl.TabPages.Add("1"); tabControl.TabPages.Add("2"); tabControl.TabPages.Add("3"); PrivateObject po = new PrivateObject(typeof(TabPageM), new object[] { tabControl }); //型が決められない var Ta = po.GetFieldOrProperty("_tabP"); //Taが配列のため下記でvisibleプロパティをとれない Type t = Ta.GetType(); FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); //_tabPクラスの Visibleプロパテイをとりたい } } } コード
回答3件
あなたの回答
tips
プレビュー