我有一個問題:比較的typeof類
Control controlToGetFocus = this;
if (this.Parent.GetType() == typeof(...))
我不能從這裏訪問類,因爲它們來自不同的項目,是假設分離。
有什麼辦法可以做到這一點,也許有其他的方法?我確實嘗試了this.Parent.Name
,但是我的眼睛不喜歡那個解決方案;)
我有一個問題:比較的typeof類
Control controlToGetFocus = this;
if (this.Parent.GetType() == typeof(...))
我不能從這裏訪問類,因爲它們來自不同的項目,是假設分離。
有什麼辦法可以做到這一點,也許有其他的方法?我確實嘗試了this.Parent.Name
,但是我的眼睛不喜歡那個解決方案;)
您可以使用
if (this.Parent.GetType().ToString() == "YOURTYPE")
UPDATE:
您可以創建你需要共享類型的一個共同的項目,並引用此項目的任何其他項目。然後下面的工作:
if (this.Parent is YOURINTERFACETYPE)
假設父對象實現YOURINTERFACETYPE
在我看來,這不是一個好的建議,重構或模糊處理可能會打破它 –
這不是一個推薦的解決方案,但是這對作者很有用。否則,他需要一個單獨的Common項目來引用。 – realnero
認爲這是目前最好的解決方案。謝謝! – HappySoftwareDeveloper
如果你需要檢查'this.Parent'是否是一個特定的實現,你應該使用接口而不是特定的類型。正如你所說,你的項目應該是分開的。但項目共享通用接口還是可以的。
給定一個接口是這樣的:
if (this.Parent is IDoStuff) { ... }
注意:
public interface IDoStuff { }
如果家長實現它這樣你可以檢查,當然這種方法要求你在控制實現在'Parent'中找到的實例。
NOTE2:爲了澄清,通用接口必須放置在一個單獨的項目/程序集中,兩個項目都可以參考。
也許你可以檢查一些常見的,項目之間的接口共享? –