2012-08-25 53 views
1

下面的代碼行歧義參考建議

TreeView treeview = (TreeView)currentGroup.Content; 

列表錯誤

'樹視圖' 是 'System.Windows.Forms.TreeView' 之間的不明確的引用和 'System.Windows.Controls.TreeView'

我知道原因是我需要明確說明哪個引用要用作TreeView例如:

System.Windows.Controls.TreeView treeview = (System.Windows.Controls.TreeView)currentGroup.Content; 

這是什麼最佳實踐?如果通過多種方法廣泛使用,還有另外一種(整潔的)方式來定義參考文件TreeView必須使用嗎?

回答

6

如果使用例如特別System.Windows.Forms.TreeView,你只需要添加

using TreeView = System.Windows.Forms.TreeView; 

到你使用的語句列表,默認情況下此類中的編譯器將承擔System.Windows.Forms.TreeView當您使用TreeView

1

既然您正在投射,您還可以使用var關鍵字保存一些輸入內容。

var treeview = (System.Windows.Controls.TreeView)currentGroup.Content; 
+0

我知道這並沒有解決你的主要問題(Maxim做得很好),但你要求'整潔'(我認爲它是'tidier')代碼。 – 2012-08-25 15:31:22

3

using語句中使用別名:

using WF = System.Windows.Forms; 
using WC = System.Windows.Controls; 

然後,你可以簡單地使用:

WF::TreeView tv1; 

WC::TreeView tv2; 

雙冒號強制前綴被視爲一個命名空間,所以即使你創建了一個名爲WF的類,別名仍然有效。

+0

謝謝,這真的很有用。 – user3357963

1

簡單的解決方案:var treeview = currentGroup.Content;


解決方案,如果你不能使用var:在您的文件變化using System.Windows.Controls;的頂部using cntrl = System.Windows.Controls;這使得一個別名,所以這個改變你原來的例子來

cntrl.TreeView treeView; 
treeView = (cntrl.TreeView)currentGroup.Content; 

如果Content必須投出,您可以將兩者合併爲

var treeView = (cntrl.TreeView)currentGroup.Content;