请教提示语法错误:“WayControls.WayCheckFormItemCollection”并不包含对“LoadViewState”的定义错在哪里?请指教。以下为代码
出错的文件内容:
namespace WayControls

public class WayCheckForm : WebControl
protected override void LoadViewState(object savedState)
        {
            if (savedState != null)
            {
                object[] objArray1 = (object[]) savedState;
                base.LoadViewState(objArray1[0]);
                this.Items.LoadViewState(objArray1[1]);

            }
        }

public WayCheckFormItemCollection Items
        {
            get
            {
                return this._Items;
            }
            set
            {
                this._Items = value;
            }
        }
WayCheckFormItemCollection在另一个文件中:
namespace WayControls

public class WayCheckFormItemCollection : WayCollectionBaseWayCollectionBase在另一个文件中:
namespace WayControls

public class WayCollectionBase : CollectionBase, IStateManager

void IStateManager.LoadViewState(object savedState)
        {
            
        }几个文件都出现这样的错误了。怎么改?

解决方案 »

  1.   

    LoadViewState()是继承WebControl之后这个类才具有的方法
    在你这里的那个this.Items这是一个集合 而不是具体的那一个继承于WebControl的对象
    你可以这样this.Items[0].LoadViewState()应该就没有问题了
    这里可能需要强制转换一下  应为LoadViewState方法是Control类的一个方法
      

  2.   

    public class WayCheckFormItemCollection : WayCollectionBase
    {
    //这个类里面重载一下LoadViewState方法试试
    protected override void LoadViewState(object savedState)
            {
                base.OnPreRender(savedState);
            }}
      

  3.   

    这是类型的问题,请尝试如下的方法,做类型转换:
    public class WayCheckFormItemCollection : WayCollectionBase{
       public void LoadViewState(object state){
          ((IStateManager)this).LoadViewState(state);
       }
    }
      

  4.   

    你实现的是一个显式的接口实现,也就是通常我们所说的私有接口实现,这个和公共接口实现是不同的,所以你要通过上面的显式类型转换才可以调用其子类的接口方法,或者改成公共接口实现,即在实现接口IStateManager的时候方法LoadViewState前面不要添加IStateManager限定,直接使用LoadViewState即可!