Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / ConnectionStringsExpressionBuilder.cs / 2 / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BuildManager.cs
- PageOrientation.cs
- LineBreakRecord.cs
- LocalizeDesigner.cs
- LocatorManager.cs
- Parameter.cs
- PeerName.cs
- SchemaTableColumn.cs
- DataGridColumn.cs
- WindowsScroll.cs
- StatusStrip.cs
- DoubleLinkListEnumerator.cs
- UniqueConstraint.cs
- graph.cs
- EditorZoneBase.cs
- Sql8ExpressionRewriter.cs
- ExpressionBuilderCollection.cs
- InstanceNormalEvent.cs
- AssemblyCollection.cs
- DbException.cs
- NonBatchDirectoryCompiler.cs
- CharacterBuffer.cs
- VisualCollection.cs
- CLSCompliantAttribute.cs
- LocalizationComments.cs
- SystemWebSectionGroup.cs
- PageSetupDialog.cs
- BlockUIContainer.cs
- PrintingPermissionAttribute.cs
- ManualResetEventSlim.cs
- StatusBarDesigner.cs
- RuntimeWrappedException.cs
- CannotUnloadAppDomainException.cs
- EndpointAddressProcessor.cs
- MethodExpr.cs
- TransformGroup.cs
- TextBoxBase.cs
- GatewayDefinition.cs
- HWStack.cs
- BindingOperations.cs
- DataError.cs
- RenderData.cs
- Point.cs
- SessionIDManager.cs
- WindowsPen.cs
- DbgUtil.cs
- ToggleProviderWrapper.cs
- VarRefManager.cs
- MailAddress.cs
- _AutoWebProxyScriptEngine.cs
- Renderer.cs
- ApplicationFileCodeDomTreeGenerator.cs
- HybridDictionary.cs
- InteropEnvironment.cs
- URLMembershipCondition.cs
- DateTimeFormatInfoScanner.cs
- XmlBoundElement.cs
- CodeAttributeArgument.cs
- ObjectDataSourceMethodEventArgs.cs
- DefaultClaimSet.cs
- FormViewDeleteEventArgs.cs
- DefaultParameterValueAttribute.cs
- ConfigurationLocation.cs
- TypeBuilderInstantiation.cs
- AuthorizationContext.cs
- XmlSubtreeReader.cs
- ListSortDescription.cs
- FieldToken.cs
- CLRBindingWorker.cs
- RightsManagementInformation.cs
- _HeaderInfo.cs
- StateMachineHelpers.cs
- SourceCollection.cs
- SqlRecordBuffer.cs
- Type.cs
- AsyncPostBackTrigger.cs
- FrameworkContentElementAutomationPeer.cs
- SafeRightsManagementHandle.cs
- CapabilitiesUse.cs
- CellConstantDomain.cs
- AttributeQuery.cs
- RegistryPermission.cs
- XmlKeywords.cs
- ObjectListCommandsPage.cs
- Span.cs
- SelectionPatternIdentifiers.cs
- Triplet.cs
- DataControlFieldHeaderCell.cs
- NullableDoubleSumAggregationOperator.cs
- ResizeGrip.cs
- TreeSet.cs
- EventTrigger.cs
- EncodingInfo.cs
- UndoUnit.cs
- WorkflowTimerService.cs
- HttpDictionary.cs
- PartBasedPackageProperties.cs
- BasicHttpSecurity.cs
- DbMetaDataCollectionNames.cs
- ClipboardData.cs