Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Compilation / ConnectionStringsExpressionBuilder.cs / 1 / ConnectionStringsExpressionBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.Configuration; using System.Globalization; using System.Web.UI; [ExpressionPrefix("ConnectionStrings")] [ExpressionEditor("System.Web.UI.Design.ConnectionStringsExpressionEditor, " + AssemblyRef.SystemDesign)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ConnectionStringsExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context) { // This code is also copied in ConnectionStringsExpressionEditor.ParseExpression() const string connectionStringSuffix = ".connectionstring"; const string providerNameSuffix = ".providername"; string name = String.Empty; bool connectionString = true; if (expression != null) { if (expression.EndsWith(connectionStringSuffix, StringComparison.OrdinalIgnoreCase)) { name = expression.Substring(0, expression.Length - connectionStringSuffix.Length); } else { if (expression.EndsWith(providerNameSuffix, StringComparison.OrdinalIgnoreCase)) { connectionString = false; name = expression.Substring(0, expression.Length - providerNameSuffix.Length); } else { name = expression; } } } return new Pair(name, connectionString); } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; if (connectionString) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionString", new CodePrimitiveExpression(name)); } else { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionStringProviderName", new CodePrimitiveExpression(name)); } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[name]; if (connectionString) { return GetConnectionString(name); } else { return GetConnectionStringProviderName(name); } } public static string GetConnectionStringProviderName(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ProviderName; } public static string GetConnectionString(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ConnectionString; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.Configuration; using System.Globalization; using System.Web.UI; [ExpressionPrefix("ConnectionStrings")] [ExpressionEditor("System.Web.UI.Design.ConnectionStringsExpressionEditor, " + AssemblyRef.SystemDesign)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ConnectionStringsExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context) { // This code is also copied in ConnectionStringsExpressionEditor.ParseExpression() const string connectionStringSuffix = ".connectionstring"; const string providerNameSuffix = ".providername"; string name = String.Empty; bool connectionString = true; if (expression != null) { if (expression.EndsWith(connectionStringSuffix, StringComparison.OrdinalIgnoreCase)) { name = expression.Substring(0, expression.Length - connectionStringSuffix.Length); } else { if (expression.EndsWith(providerNameSuffix, StringComparison.OrdinalIgnoreCase)) { connectionString = false; name = expression.Substring(0, expression.Length - providerNameSuffix.Length); } else { name = expression; } } } return new Pair(name, connectionString); } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; if (connectionString) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionString", new CodePrimitiveExpression(name)); } else { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionStringProviderName", new CodePrimitiveExpression(name)); } } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[name]; if (connectionString) { return GetConnectionString(name); } else { return GetConnectionStringProviderName(name); } } public static string GetConnectionStringProviderName(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ProviderName; } public static string GetConnectionString(string connectionStringName) { ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[connectionStringName]; if (setting == null) { throw new InvalidOperationException(SR.GetString(SR.Connection_string_not_found, connectionStringName)); } return setting.ConnectionString; } } } // 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
- Attributes.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- XslAstAnalyzer.cs
- StorageInfo.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- QueryStringParameter.cs
- HierarchicalDataBoundControl.cs
- ClientApiGenerator.cs
- Int32KeyFrameCollection.cs
- TimeoutValidationAttribute.cs
- ComplexPropertyEntry.cs
- TextFragmentEngine.cs
- DataGridViewColumnHeaderCell.cs
- ToolStripSplitButton.cs
- ContextStack.cs
- ProfileService.cs
- TableRow.cs
- ActiveXContainer.cs
- RoutedEvent.cs
- Menu.cs
- RadioButtonList.cs
- XmlDocumentSerializer.cs
- RowToFieldTransformer.cs
- XsdBuildProvider.cs
- SlipBehavior.cs
- mediaeventargs.cs
- base64Transforms.cs
- PolyLineSegmentFigureLogic.cs
- ProjectionPathBuilder.cs
- SpeechSynthesizer.cs
- OutputCacheModule.cs
- SettingsContext.cs
- MetadataException.cs
- PresentationUIStyleResources.cs
- CngAlgorithmGroup.cs
- Merger.cs
- BinaryCommonClasses.cs
- EngineSite.cs
- PipelineModuleStepContainer.cs
- ContentIterators.cs
- SystemInfo.cs
- WebPartMovingEventArgs.cs
- CodeTypeReferenceExpression.cs
- Missing.cs
- TextAdaptor.cs
- XmlSchemaAttributeGroup.cs
- HttpProtocolImporter.cs
- OledbConnectionStringbuilder.cs
- EDesignUtil.cs
- COM2ColorConverter.cs
- DelegateBodyWriter.cs
- SiteMapProvider.cs
- TextBoxRenderer.cs
- ScopelessEnumAttribute.cs
- UserControlBuildProvider.cs
- DocumentReference.cs
- AsyncPostBackTrigger.cs
- ToolBar.cs
- HwndSource.cs
- OpacityConverter.cs
- MessageDescriptionCollection.cs
- AuthenticodeSignatureInformation.cs
- DesignerDataParameter.cs
- WSSecurityTokenSerializer.cs
- LocationSectionRecord.cs
- ServicePointManager.cs
- DataControlPagerLinkButton.cs
- ArrayElementGridEntry.cs
- QuaternionKeyFrameCollection.cs
- ToolStripPanelRow.cs
- EntityCommandDefinition.cs
- BufferModesCollection.cs
- FontCacheLogic.cs
- RotateTransform.cs
- WebBrowserHelper.cs
- SqlConnectionFactory.cs
- SerializationInfoEnumerator.cs
- XmlSerializationWriter.cs
- ContextMenuStrip.cs
- AttributeData.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- CriticalExceptions.cs
- InternalCache.cs
- XmlSchemaSequence.cs
- TraceHandler.cs
- WebPartMinimizeVerb.cs
- _StreamFramer.cs
- Panel.cs
- LinqDataSourceHelper.cs
- ExtenderControl.cs
- RegularExpressionValidator.cs
- DataSourceUtil.cs
- WebPartDeleteVerb.cs
- Version.cs
- DeviceContext.cs
- SortKey.cs
- PasswordRecovery.cs
- TableCellAutomationPeer.cs
- WindowsGraphicsWrapper.cs
- FrameworkElement.cs