2012-04-25 75 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