public override void LoadViewState(object state)
{
object[] states = state as object[];
ResourceManager rm = this.ResourceManager;
if (rm != null && !rm.ManageEventsViewState)
{
base.LoadViewState(state);
}
if (states != null)
{
foreach (Pair pair in states)
{
string listenerName = (string)pair.First;
object listenerState = pair.Second;
if (listenerName == "base")
{
base.LoadViewState(listenerState);
}
else
{
PropertyInfo property = this.GetType().GetProperty(listenerName);
if (property == null)
{
throw new InvalidOperationException("Can't find the property '{0}'".FormatWith(listenerName));
}
ComponentListener componentListener = (ComponentListener)property.GetValue(this, null);
if (componentListener != null)
{
componentListener.LoadViewState(listenerState);
}
}
}
}
else
{
base.LoadViewState(state);
}
}
}