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
- ContractSearchPattern.cs
- SelectionChangedEventArgs.cs
- Registry.cs
- RunClient.cs
- SimpleWebHandlerParser.cs
- AtomEntry.cs
- FullTextLine.cs
- ValuePatternIdentifiers.cs
- XmlUnspecifiedAttribute.cs
- DispatchWrapper.cs
- PerformanceCounterManager.cs
- TypeDescriptionProviderAttribute.cs
- PrefixQName.cs
- MethodRental.cs
- HybridDictionary.cs
- ExtractedStateEntry.cs
- CustomAttribute.cs
- FontWeight.cs
- AffineTransform3D.cs
- IndexOutOfRangeException.cs
- Documentation.cs
- EventMappingSettingsCollection.cs
- BigInt.cs
- ValidationError.cs
- PropertyManager.cs
- PackagePart.cs
- LogicalTreeHelper.cs
- CmsInterop.cs
- DesignerMetadata.cs
- DataGridViewCheckBoxCell.cs
- DefaultCommandExtensionCallback.cs
- ProviderException.cs
- BufferedGraphics.cs
- ExpressionPrefixAttribute.cs
- TdsValueSetter.cs
- GZipDecoder.cs
- NegationPusher.cs
- SecurityPolicySection.cs
- ClientProxyGenerator.cs
- SpellerStatusTable.cs
- BooleanFunctions.cs
- RoutedEvent.cs
- BinaryCommonClasses.cs
- VisualStyleRenderer.cs
- ResourcePermissionBaseEntry.cs
- XPathAncestorQuery.cs
- ThemeableAttribute.cs
- SourceItem.cs
- ReadOnlyCollection.cs
- UserInitiatedNavigationPermission.cs
- Walker.cs
- SQLCharsStorage.cs
- XmlCompatibilityReader.cs
- PlatformNotSupportedException.cs
- DataServiceQuery.cs
- ItemChangedEventArgs.cs
- CommandField.cs
- PrintControllerWithStatusDialog.cs
- UnmanagedMarshal.cs
- FixedSOMContainer.cs
- Color.cs
- InkCanvasInnerCanvas.cs
- ApplicationDirectoryMembershipCondition.cs
- RegionInfo.cs
- PolyBezierSegmentFigureLogic.cs
- dataSvcMapFileLoader.cs
- MemberPath.cs
- WindowProviderWrapper.cs
- ComponentEditorPage.cs
- Cell.cs
- ExtensibleSyndicationObject.cs
- BrowserCapabilitiesFactory.cs
- TextRangeProviderWrapper.cs
- DecoderFallbackWithFailureFlag.cs
- SQLInt16Storage.cs
- BuildProvider.cs
- OdbcCommandBuilder.cs
- LambdaCompiler.Statements.cs
- DesignerCatalogPartChrome.cs
- LayoutTableCell.cs
- XsdDataContractImporter.cs
- StructuredTypeEmitter.cs
- TypeEnumerableViewSchema.cs
- HMACMD5.cs
- Soap.cs
- DbCommandDefinition.cs
- SelectionProcessor.cs
- UriWriter.cs
- SignatureGenerator.cs
- RuntimeConfig.cs
- PartialList.cs
- XAMLParseException.cs
- ActivityPreviewDesigner.cs
- SecurityContextTokenCache.cs
- CriticalExceptions.cs
- AdornerLayer.cs
- DivideByZeroException.cs
- InfoCardCryptoHelper.cs
- SmiContextFactory.cs
- StructuredTypeEmitter.cs