2012-04-25 64 views
0

好的,奇怪的一個。我有很多使用中繼器的用戶控件,中繼器的佈局在所有控件中都是相同的,並且它們都具有公開可用的方法bindData()盲目地調用公共方法(C#)

我想知道,我可以設置另一個用戶控件的分頁,而不必指定父控制?

我能夠做到以下幾點:

((controls.specificuserControlClass)Parent).bindData(); 

這是所有罰款 - 但我需要指定specificuserControlClass到尋呼機,然後將需要它「每轉發」如果你看到了什麼我的意思是?

那麼我可以從兒童控制中盲目地打電話給Parent.bindData()嗎?我「知道」該方法存在(或將構建檢查以確保),但Visual Studio並不快樂,因爲它不知道該方法。

+0

bindData()方法是否來自接口?如果不是,可以嗎? – zimdanen 2012-04-25 18:07:45

+0

@zimdanen看看下面的答案,我確信它可以,我現在只是試試它! – RemarkLima 2012-04-25 18:22:42

回答

6

爲什麼不讓你的控件都實現一個特定的接口?

public interface IBindData 
{ 
     void bindData(); 
} 

然後,你會簡單地做:

((IBindData)Parent).bindData() 

它應該調用相應地對每個控件的方法。

+0

要麼,要麼使用反射。 – Dave 2012-04-25 18:07:08

+0

就個人而言,我寧願重寫'OnItemCreated'並將代碼帶出視圖,但這也將會更加有效= D – Tejs 2012-04-25 18:07:31

+2

詛咒您的速度,@Tejs,這將成爲我的答案! :) +1 – SouthShoreAK 2012-04-25 18:07:47