马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。ViewState信任人人城市利用,可ViewState究竟是甚么,又有几人晓得呢?
StateBag类这个就不必多说啦吧
在Asp.net2.0里,用到StateBag有三处
1Control._viewState这个就是人人利用的ViewState
2WebControl.attrState这个是寄存Attribute的
3Style.statebag是寄存款式的
.......
Page性命周期内SaveAllState时
必要师长教师成个Piar类,在挪用this.SavePageStateToPersistenceMedium(pair1);时,将其序列化
注重:Asp.net2.0只完成了HiddenFieldPageStatePersister,用户能够从重写,大概利用ControlAdapter供应别的情势的进理机制
HiddenFieldPageStatePersister.Save时会过pair1举行序列化
序列化时,.net供应了三种体例
1利用密钥
2.利用Mac
3不利用
//先序列化
this.Serialize(outputStream,stateGraph);
outputStream.SetLength(outputStream.Position);
byte[]buf=outputStream.GetBuffer();
intlength=(int)outputStream.Length;
//判别以后Page.RequiresViewStateEncryptionInternal属性前往值是否是必要加密
//假如未挪用Page.RegisterRequiresViewStateEncryption,则默许为false
//假如界面设置了RegisterRequiresViewStateEncryption和EnableViewStateMac,加密优先于Mac
if((this._page!=null)&&this._page.RequiresViewStateEncryptionInternal)//加密
{
buf=MachineKeySection.EncryptOrDecryptData(true,buf,this.GetMacKeyModifier(),0,length);
length=buf.Length;
}
elseif(((this._page!=null)&&this._page.EnableViewStateMac)||(this._macKeyBytes!=null))//设置可使用Mac
{
buf=MachineKeySection.GetEncodedData(buf,this.GetMacKeyModifier(),0,reflength);
}
text=Convert.ToBase64String(buf,0,length);//nullofeither
谈到这,良多人要问pair1里放的是甚么,我画了一幅图,具体申明了一下
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。 |