1

私はWebアプリケーションを開発しています。インターフェイス ITest を作成しました

public interface ITest
{
    void Add();
}

& ITest を実装するユーザーコントロール

 public partial class WebUserControl1 : System.Web.UI.UserControl, ITest
    {
        public void Add()
        {
            throw new NotImplementedException();
        }
    }

私のウェブページにユーザーコントロールを配置しました。しかし、ユーザーコントロールを IType 型に型キャストすると、Exception(System.InvalidCastException) がスローされます

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
  //          WebUserControl11.Add();
            foreach (var uCnt in this.Page.FindControlsOfType<UserControl>())
            {
                if (uCnt.Visible)
                {
                    ((ITest)uCnt).Add(); //Error : Casting Exception
                }
                else
                {
                }
            }
        }
    }

Add メソッドを直接呼び出すこともできますが、ITest Interface を使用して呼び出したい

4

1 に答える 1

0

メソッドがどのようにFindControlsOfType実装されたかはわかりませんが、すべてのUserControlインスタンスではなく、ITestインターフェイスを実装するコントロールを取得する必要があると仮定します。

于 2012-10-30T05:32:09.593 に答える