Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Point3D.cs
- TableDetailsRow.cs
- ExtendedTransformFactory.cs
- DoubleAnimationUsingKeyFrames.cs
- UInt32Storage.cs
- TreeNode.cs
- WebPartDisplayModeCollection.cs
- IPEndPointCollection.cs
- HttpCachePolicyElement.cs
- ClaimTypeElement.cs
- Evaluator.cs
- GeometryDrawing.cs
- GeneralTransform3DTo2D.cs
- DataStreams.cs
- CodeDelegateInvokeExpression.cs
- RewritingPass.cs
- XmlCodeExporter.cs
- QilParameter.cs
- Hashtable.cs
- Span.cs
- ProxyWebPartManager.cs
- MutableAssemblyCacheEntry.cs
- CatalogZoneBase.cs
- IPGlobalProperties.cs
- CultureTable.cs
- XmlnsDictionary.cs
- TransactionChannelListener.cs
- RegistryKey.cs
- BuildProviderAppliesToAttribute.cs
- ProvidersHelper.cs
- DesignerAttribute.cs
- PropertyValueUIItem.cs
- _SslStream.cs
- ChameleonKey.cs
- XXXInfos.cs
- DataKey.cs
- WebPartAuthorizationEventArgs.cs
- CodeThrowExceptionStatement.cs
- BaseTemplateParser.cs
- SizeF.cs
- ChangeInterceptorAttribute.cs
- SmiEventSink_Default.cs
- ObjectQueryExecutionPlan.cs
- MatrixStack.cs
- CompositeActivityTypeDescriptorProvider.cs
- BindToObject.cs
- FamilyCollection.cs
- PrintDialogException.cs
- ConnectionStringSettings.cs
- SimpleTextLine.cs
- UnsupportedPolicyOptionsException.cs
- AutoCompleteStringCollection.cs
- PrimitiveXmlSerializers.cs
- COM2IDispatchConverter.cs
- AttributeData.cs
- DataKey.cs
- SizeAnimationBase.cs
- FileVersion.cs
- DataPagerField.cs
- UTF8Encoding.cs
- TdsParserStateObject.cs
- DataControlField.cs
- StringToken.cs
- SchemaNamespaceManager.cs
- SignedInfo.cs
- SponsorHelper.cs
- PresentationSource.cs
- HelpEvent.cs
- SystemUnicastIPAddressInformation.cs
- ClientRuntimeConfig.cs
- FileDataSource.cs
- XpsS0ValidatingLoader.cs
- filewebrequest.cs
- Compiler.cs
- HMACSHA256.cs
- FileController.cs
- WindowsTooltip.cs
- TextSegment.cs
- Rotation3D.cs
- _NtlmClient.cs
- UnSafeCharBuffer.cs
- ScriptResourceAttribute.cs
- XmlNodeList.cs
- BitmapEffectState.cs
- WebPartCloseVerb.cs
- RefType.cs
- _NtlmClient.cs
- Optimizer.cs
- HttpPostLocalhostServerProtocol.cs
- RichTextBox.cs
- VideoDrawing.cs
- SettingsPropertyWrongTypeException.cs
- ReadOnlyTernaryTree.cs
- FlowPanelDesigner.cs
- Geometry3D.cs
- UserControlParser.cs
- SmiEventSink_DeferedProcessing.cs
- ExpressionLink.cs
- _WinHttpWebProxyDataBuilder.cs
- IdentityHolder.cs