2014-01-14 33 views
0

我有一個問題:比較的typeof類

Control controlToGetFocus = this; 
if (this.Parent.GetType() == typeof(...)) 

我不能從這裏訪問類,因爲它們來自不同的項目,是假設分離。

有什麼辦法可以做到這一點,也許有其他的方法?我確實嘗試了this.Parent.Name,但是我的眼睛不喜歡那個解決方案;)

+0

也許你可以檢查一些常見的,項目之間的接口共享? –

回答

2

您可以使用

if (this.Parent.GetType().ToString() == "YOURTYPE") 

UPDATE:

您可以創建你需要共享類型的一個共同的項目,並引用此項目的任何其他項目。然後下面的工作:

if (this.Parent is YOURINTERFACETYPE) 

假設父對象實現YOURINTERFACETYPE

+1

在我看來,這不是一個好的建議,重構或模糊處理可能會打破它 –

+0

這不是一個推薦的解決方案,但是這對作者很有用。否則,他需要一個單獨的Common項目來引用。 – realnero

+0

認爲這是目前最好的解決方案。謝謝! – HappySoftwareDeveloper

4

如果你需要檢查'this.Parent'是否是一個特定的實現,你應該使用接口而不是特定的類型。正如你所說,你的項目應該是分開的。但項目共享通用接口還是可以的。

給定一個接口是這樣的:

if (this.Parent is IDoStuff) { ... } 

注意

public interface IDoStuff { } 

如果家長實現它這樣你可以檢查,當然這種方法要求你在控制實現在'Parent'中找到的實例。

NOTE2:爲了澄清,通用接口必須放置在一個單獨的項目/程序集中,兩個項目都可以參考。

+0

「無法從這裏訪問該類,因爲它們來自不同的項目,並且假設它們是分開的。」因此,Interface也將無法訪問。 – realnero

+2

@realnero - 當然。但是這兩個項目都可以訪問第三個包含這種共享接口的通用項目。那就是說,你是否在控制這裏的所有項目?如果沒有,你當然不能將接口添加到該實現中,並且我的建議不適用於你。 –

+0

稍後沒有添加註釋嗎? :) – realnero