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
- IList.cs
- Mappings.cs
- WorkflowApplicationAbortedEventArgs.cs
- SuppressMergeCheckAttribute.cs
- VerificationException.cs
- PrintDialog.cs
- ImplicitInputBrush.cs
- _StreamFramer.cs
- Restrictions.cs
- NotifyCollectionChangedEventArgs.cs
- OdbcParameter.cs
- EventlogProvider.cs
- SQLDecimal.cs
- DesignerVerb.cs
- WeakReference.cs
- BoundColumn.cs
- ContainerUtilities.cs
- FixedSOMTable.cs
- WmlLinkAdapter.cs
- CorrelationValidator.cs
- TextSerializer.cs
- CachedBitmap.cs
- ScaleTransform3D.cs
- HttpSessionStateWrapper.cs
- RelatedEnd.cs
- AbandonedMutexException.cs
- ZipFileInfoCollection.cs
- GeneratedView.cs
- AnnotationHelper.cs
- NestPullup.cs
- DataObjectAttribute.cs
- SafeCertificateContext.cs
- NetworkAddressChange.cs
- RelationHandler.cs
- GlyphingCache.cs
- ConfigurationLocation.cs
- Profiler.cs
- CustomAttributeBuilder.cs
- TemplateBindingExpression.cs
- ScriptHandlerFactory.cs
- BitmapEffectInput.cs
- CodeAttributeDeclaration.cs
- RuntimeArgumentHandle.cs
- DbParameterCollectionHelper.cs
- AsymmetricSignatureFormatter.cs
- TraceXPathNavigator.cs
- PageEventArgs.cs
- FrameworkContentElement.cs
- ISO2022Encoding.cs
- SafeNativeMethodsOther.cs
- SQLInt16Storage.cs
- ReadContentAsBinaryHelper.cs
- StringStorage.cs
- GPStream.cs
- IRCollection.cs
- NativeCppClassAttribute.cs
- CalendarDay.cs
- HttpClientChannel.cs
- Button.cs
- RectAnimationClockResource.cs
- ListMarkerSourceInfo.cs
- OrderPreservingSpoolingTask.cs
- WhitespaceRuleLookup.cs
- WebZoneDesigner.cs
- hresults.cs
- AssemblyAssociatedContentFileAttribute.cs
- XmlSchemaInclude.cs
- PolyLineSegment.cs
- WorkflowView.cs
- ToolbarAUtomationPeer.cs
- AdapterUtil.cs
- ExpressionParser.cs
- ICollection.cs
- RegexInterpreter.cs
- PolicyException.cs
- EventDescriptor.cs
- CultureInfo.cs
- StorageRoot.cs
- InputDevice.cs
- ToolStripSeparatorRenderEventArgs.cs
- DecimalConverter.cs
- Console.cs
- TypeUsageBuilder.cs
- WebBrowserSiteBase.cs
- HtmlProps.cs
- ChtmlTextWriter.cs
- DetailsViewInsertEventArgs.cs
- BuildTopDownAttribute.cs
- Part.cs
- Process.cs
- ExpressionBinding.cs
- ArgumentOutOfRangeException.cs
- AttachedPropertyMethodSelector.cs
- ScriptReferenceEventArgs.cs
- DragDrop.cs
- CalendarDay.cs
- NavigationProperty.cs
- WebPartCollection.cs
- SqlClientPermission.cs
- RC2CryptoServiceProvider.cs