Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / SimplePropertyEntry.cs / 1 / SimplePropertyEntry.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System.CodeDom;
using System.Web.Compilation;
using Debug=System.Web.Util.Debug;
using System.Security.Permissions;
///
/// PropertyEntry for simple attributes
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class SimplePropertyEntry : PropertyEntry {
private string _persistedValue;
private bool _useSetAttribute;
private object _value;
internal SimplePropertyEntry() {
}
///
///
//
public string PersistedValue {
get {
return _persistedValue;
}
set {
_persistedValue = value;
}
}
///
///
public bool UseSetAttribute {
get {
return _useSetAttribute;
}
set {
_useSetAttribute = value;
}
}
///
///
public object Value {
get {
return _value;
}
set {
_value = value;
}
}
// Build the statement that assigns this property
internal CodeStatement GetCodeStatement(BaseTemplateCodeDomTreeGenerator generator,
CodeExpression ctrlRefExpr) {
// If we don't have a type, use IAttributeAccessor.SetAttribute
if (UseSetAttribute) {
// e.g. ((IAttributeAccessor)__ctrl).SetAttribute("{{_name}}", "{{_value}}");
CodeMethodInvokeExpression methCallExpression = new CodeMethodInvokeExpression(
new CodeCastExpression(typeof(IAttributeAccessor), ctrlRefExpr),
"SetAttribute");
methCallExpression.Parameters.Add(new CodePrimitiveExpression(Name));
methCallExpression.Parameters.Add(new CodePrimitiveExpression(Value));
return new CodeExpressionStatement(methCallExpression);
}
CodeExpression leftExpr, rightExpr = null;
if (PropertyInfo != null) {
leftExpr = CodeDomUtility.BuildPropertyReferenceExpression(ctrlRefExpr, Name);
}
else {
// In case of a field, there should only be one (unlike properties)
Debug.Assert(Name.IndexOf('.') < 0, "_name.IndexOf('.') < 0");
leftExpr = new CodeFieldReferenceExpression(ctrlRefExpr, Name);
}
if (Type == typeof(string)) {
rightExpr = generator.BuildStringPropertyExpression(this);
}
else {
rightExpr = CodeDomUtility.GenerateExpressionForValue(PropertyInfo, Value, Type);
}
// Now that we have both side, add the assignment
return new CodeAssignStatement(leftExpr, rightExpr);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System.CodeDom;
using System.Web.Compilation;
using Debug=System.Web.Util.Debug;
using System.Security.Permissions;
///
/// PropertyEntry for simple attributes
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class SimplePropertyEntry : PropertyEntry {
private string _persistedValue;
private bool _useSetAttribute;
private object _value;
internal SimplePropertyEntry() {
}
///
///
//
public string PersistedValue {
get {
return _persistedValue;
}
set {
_persistedValue = value;
}
}
///
///
public bool UseSetAttribute {
get {
return _useSetAttribute;
}
set {
_useSetAttribute = value;
}
}
///
///
public object Value {
get {
return _value;
}
set {
_value = value;
}
}
// Build the statement that assigns this property
internal CodeStatement GetCodeStatement(BaseTemplateCodeDomTreeGenerator generator,
CodeExpression ctrlRefExpr) {
// If we don't have a type, use IAttributeAccessor.SetAttribute
if (UseSetAttribute) {
// e.g. ((IAttributeAccessor)__ctrl).SetAttribute("{{_name}}", "{{_value}}");
CodeMethodInvokeExpression methCallExpression = new CodeMethodInvokeExpression(
new CodeCastExpression(typeof(IAttributeAccessor), ctrlRefExpr),
"SetAttribute");
methCallExpression.Parameters.Add(new CodePrimitiveExpression(Name));
methCallExpression.Parameters.Add(new CodePrimitiveExpression(Value));
return new CodeExpressionStatement(methCallExpression);
}
CodeExpression leftExpr, rightExpr = null;
if (PropertyInfo != null) {
leftExpr = CodeDomUtility.BuildPropertyReferenceExpression(ctrlRefExpr, Name);
}
else {
// In case of a field, there should only be one (unlike properties)
Debug.Assert(Name.IndexOf('.') < 0, "_name.IndexOf('.') < 0");
leftExpr = new CodeFieldReferenceExpression(ctrlRefExpr, Name);
}
if (Type == typeof(string)) {
rightExpr = generator.BuildStringPropertyExpression(this);
}
else {
rightExpr = CodeDomUtility.GenerateExpressionForValue(PropertyInfo, Value, Type);
}
// Now that we have both side, add the assignment
return new CodeAssignStatement(leftExpr, rightExpr);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Column.cs
- WebMessageEncoderFactory.cs
- EventSetter.cs
- ComplexLine.cs
- Parsers.cs
- ConnectionManagementElement.cs
- Polygon.cs
- WizardStepCollectionEditor.cs
- ListViewItemMouseHoverEvent.cs
- UInt32.cs
- ImpersonationContext.cs
- CommandManager.cs
- TableLayoutSettings.cs
- RC2.cs
- PageFunction.cs
- KeyNotFoundException.cs
- UnionCqlBlock.cs
- ListViewInsertedEventArgs.cs
- Attribute.cs
- XmlElementAttributes.cs
- GenericIdentity.cs
- ScriptingScriptResourceHandlerSection.cs
- ChannelSinkStacks.cs
- ViewStateChangedEventArgs.cs
- GlobalEventManager.cs
- ObjectManager.cs
- ModelFunction.cs
- WebPartConnectionsCloseVerb.cs
- XPathPatternParser.cs
- EmptyCollection.cs
- DetailsViewModeEventArgs.cs
- DelegatingMessage.cs
- StringUtil.cs
- ServiceInfo.cs
- LingerOption.cs
- XsdValidatingReader.cs
- SmtpMail.cs
- StubHelpers.cs
- References.cs
- Walker.cs
- ConstraintStruct.cs
- EventArgs.cs
- LoadedOrUnloadedOperation.cs
- Site.cs
- RequestCacheManager.cs
- GenericIdentity.cs
- ExceptionUtil.cs
- CoreChannel.cs
- EventLogInternal.cs
- recordstatefactory.cs
- TextModifierScope.cs
- SqlErrorCollection.cs
- CodeAttachEventStatement.cs
- HMACRIPEMD160.cs
- CharacterBufferReference.cs
- GatewayIPAddressInformationCollection.cs
- BitmapCache.cs
- AppearanceEditorPart.cs
- CompiledQuery.cs
- SoapInteropTypes.cs
- MsmqIntegrationBindingCollectionElement.cs
- Fx.cs
- SoapSchemaImporter.cs
- OleDbRowUpdatedEvent.cs
- InitializationEventAttribute.cs
- DecimalFormatter.cs
- VirtualPathProvider.cs
- AttachmentCollection.cs
- DecimalKeyFrameCollection.cs
- TimeSpanValidator.cs
- ComNativeDescriptor.cs
- PassportIdentity.cs
- RowType.cs
- ReflectionUtil.cs
- ByteAnimationUsingKeyFrames.cs
- HTTPNotFoundHandler.cs
- Literal.cs
- Util.cs
- RegisteredScript.cs
- GridViewEditEventArgs.cs
- FixedBufferAttribute.cs
- NetNamedPipeBinding.cs
- DataContractSet.cs
- XPathSelectionIterator.cs
- uribuilder.cs
- DataServiceOperationContext.cs
- SecurityPermission.cs
- MetadataException.cs
- VectorAnimation.cs
- GlyphingCache.cs
- PkcsMisc.cs
- ImageDrawing.cs
- Timeline.cs
- SqlCacheDependencyDatabaseCollection.cs
- X509CertificateInitiatorServiceCredential.cs
- RoleService.cs
- GZipStream.cs
- ShapingWorkspace.cs
- ConnectionManagementElementCollection.cs
- MemberDescriptor.cs