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
- AssemblyBuilderData.cs
- DataFormats.cs
- SortedList.cs
- RelatedPropertyManager.cs
- ReversePositionQuery.cs
- Single.cs
- TransactionManager.cs
- ListViewGroupConverter.cs
- DiagnosticsConfigurationHandler.cs
- UnmanagedHandle.cs
- RegisteredDisposeScript.cs
- TemplatedAdorner.cs
- StatusBarAutomationPeer.cs
- WeakRefEnumerator.cs
- GroupItemAutomationPeer.cs
- SortAction.cs
- SpinLock.cs
- SoapHelper.cs
- SubstitutionResponseElement.cs
- OptionUsage.cs
- SafeIUnknown.cs
- baseaxisquery.cs
- EntityDataSourceWrapperCollection.cs
- WebPartConnectionCollection.cs
- SessionPageStateSection.cs
- controlskin.cs
- FillRuleValidation.cs
- SystemIPv6InterfaceProperties.cs
- PinnedBufferMemoryStream.cs
- SeekableMessageNavigator.cs
- MarkupCompilePass1.cs
- WindowVisualStateTracker.cs
- SynchronizationContext.cs
- BulletedListDesigner.cs
- PagePropertiesChangingEventArgs.cs
- ConnectivityStatus.cs
- DragEvent.cs
- ToolStripPanelRow.cs
- SQLBinaryStorage.cs
- BeginEvent.cs
- EmptyEnumerator.cs
- Baml6Assembly.cs
- arabicshape.cs
- DeclaredTypeElementCollection.cs
- CodeTypeConstructor.cs
- OleDbSchemaGuid.cs
- AdornerPresentationContext.cs
- WebServicesSection.cs
- PassportAuthenticationModule.cs
- SystemFonts.cs
- TryCatch.cs
- ExpandSegmentCollection.cs
- WrapperEqualityComparer.cs
- InstanceOwnerQueryResult.cs
- Interop.cs
- CodeDirectoryCompiler.cs
- BrowserCapabilitiesFactoryBase.cs
- ObservableDictionary.cs
- ChtmlCommandAdapter.cs
- RenderDataDrawingContext.cs
- PeerChannelListener.cs
- StrongNameUtility.cs
- FieldBuilder.cs
- StandardCommands.cs
- X509Utils.cs
- PageAsyncTaskManager.cs
- TextReader.cs
- SqlBinder.cs
- InsufficientMemoryException.cs
- ServiceDesigner.cs
- HandleExceptionArgs.cs
- UpdateProgress.cs
- WsdlWriter.cs
- ColorConvertedBitmapExtension.cs
- XmlCharType.cs
- IsolatedStoragePermission.cs
- EditorZoneAutoFormat.cs
- SerializationFieldInfo.cs
- MdiWindowListStrip.cs
- PopupControlService.cs
- StoreAnnotationsMap.cs
- DefaultSection.cs
- PropertyTabChangedEvent.cs
- Vector3D.cs
- HttpHeaderCollection.cs
- FileDialogPermission.cs
- Int32CollectionConverter.cs
- FormatConvertedBitmap.cs
- InlineUIContainer.cs
- CodeSnippetTypeMember.cs
- GridViewCancelEditEventArgs.cs
- ToolBarDesigner.cs
- XmlCountingReader.cs
- RenderData.cs
- DatagridviewDisplayedBandsData.cs
- SqlCacheDependency.cs
- NullRuntimeConfig.cs
- ImmutablePropertyDescriptorGridEntry.cs
- GenericRootAutomationPeer.cs
- ProfileBuildProvider.cs