2012-02-28 71 views
1

標題聽起來可能有些奇怪,所以我會盡力解釋我的問題:綁定類到另一個類的屬性

可以說我有擁有一些信息類:

class InfoHolder 
{ 
    public int MyInfo1 {get; set;} 
    public int MyInfo2 { get; set; } 
} 

然後,我有另一個類,做一些事的信息:

class InfoGUIRepresenter 
{ 
    // Display an int in some kind of GUI 
    // Allow the user to change the int via the GUI 
} 

現在我需要的申述類的兩個對象,揭露我的資訊類用戶:用於兩個相關信息的一個申述。爲了達到這個目的,將每個屬性作爲某種「參數」傳遞給我們的代理類是很好的。 但是當然這在C#中是不可能的。另一個解決方案是傳遞屬性的名稱,然後使用反射來訪問它們 - 不是很好!

有沒有解決這個問題的方法?也許某種解決這種問題的架構? 謝謝!

回答

3

一種選擇是傳遞兩個代表 - 一個setter和一個用於吸氣:

var holder = new InfoHolder(); 

var representer = new InfoGUIRepresenter(() => holder.MyInfo1, 
             value => holder.MyInfo1 = value); 

然後你InfoGUIRepresenter構造將採取Func<int>Action<int>。 (或者你可以讓代表通用,爲不同類型的財產。)

0

你提到顯示「在某種GUI」,這意味着你正在使用的GUI框架。毫無疑問,該框架支持針對這種情況的明確模型。例如,如果您使用WPF,MVVM(您的info對象是模型,您的UI是一個視圖,您可以通過綁定到UI元素屬性的視圖模型屬性從視圖到模型進行綁定)。即,你是不是想在這裏重新發明輪子?

+0

其實GUI框架是我自己寫的。它基本上是在GDI Canvas上繪製的一些矩形。所以它不支持任何(至少現在);-) – Boris 2012-02-28 11:39:58

+0

好吧 - 我猜你有理由走這條路 - 但聽起來像是在你前面做了很多努力和保持工作。 – Ricibob 2012-02-28 11:44:21