4
我在使用反射的TreeListView(通過ObjectListView)顯示一個類。 TreeListView與ChildrenGetter()
代表一起使用,該代表獲取要顯示的節點(請參閱here)。間接更改類參數
爲了顯示類(我們稱之爲反映類),樹的根是類的一個實例,以及ChildrenGetter(object x)
使用反射返回實例的每個孩子的反映的階級。
例如,對於這個類:
public class Folder
{
public int BuildNumber { get; set; }
public int MaxSpeed { get; set; }
}
根將是文件夾的一個實例,並且將有2個孩子節點,含有BuildNumber和MAXSPEED的值。
這工作正常,但只用於顯示。我希望能夠在UI上更改BuildNumber和MaxSpeed的值,以便它們實際上會更改樹根所擁有的反射類的實例。
所以有這樣做的方法有兩種:然後利用反射找到
- 保存父樹節點每個節點(擁有類),並創建一個「地址路徑」爲每一個節點,更改節點並實際更改它(反映的類實例中)
- 而不是包含反射類參數值的樹節點,它們可以包含某種指向反射類實例中參數的指針。
解決方案2甚至有可能嗎?在C#中是否存在一些可能允許此類功能的指針?
你能想出更好的解決方案嗎?
注:
- 樹可以具有包含其它類的類,和深度沒有限制。現在,我沒有在任何地方使用結構體
- 我無法更改反射類。這是自動生成的
- 安全的代碼是首選,但如果沒有其他可用不安全的代碼會做
就可以把'行動'它,因此您可以執行,作爲二傳手爲屬性? –
是的,但動作將如何知道要更改哪個參數? – Nitay
如果可以,請將一個操作'val => instance.X = val'附加到標籤或其他東西上。 –