Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- String.cs
- Site.cs
- CodeIdentifiers.cs
- OrderByQueryOptionExpression.cs
- CommandManager.cs
- ListViewAutomationPeer.cs
- NeutralResourcesLanguageAttribute.cs
- _SSPISessionCache.cs
- ActivityMarkupSerializer.cs
- DesignerActionHeaderItem.cs
- IpcClientChannel.cs
- UndoUnit.cs
- EmptyReadOnlyDictionaryInternal.cs
- Pts.cs
- HttpMethodAttribute.cs
- Vector3DKeyFrameCollection.cs
- HebrewCalendar.cs
- Input.cs
- Events.cs
- DataSourceXmlSubItemAttribute.cs
- TagPrefixInfo.cs
- ProgressBarBrushConverter.cs
- ObjectDataSourceDisposingEventArgs.cs
- DuplicateWaitObjectException.cs
- UserInitiatedRoutedEventPermission.cs
- ZipPackage.cs
- XmlSchemaAttributeGroup.cs
- DynamicDataExtensions.cs
- ExtendedProperty.cs
- EnumerableRowCollection.cs
- ErrorWebPart.cs
- ReaderWriterLockSlim.cs
- RowSpanVector.cs
- ChtmlCommandAdapter.cs
- AssociationSetEnd.cs
- unitconverter.cs
- StateDesigner.Helpers.cs
- ObjectListComponentEditor.cs
- wpf-etw.cs
- OleDbErrorCollection.cs
- ReliableSessionElement.cs
- TextContainerChangedEventArgs.cs
- DictionaryEditChange.cs
- CodeSnippetStatement.cs
- ServiceContractGenerationContext.cs
- RotateTransform3D.cs
- DESCryptoServiceProvider.cs
- itemelement.cs
- InputMethodStateTypeInfo.cs
- ApplicationSecurityManager.cs
- EntityContainerEmitter.cs
- BitmapSizeOptions.cs
- NullReferenceException.cs
- RectAnimationClockResource.cs
- HttpApplicationFactory.cs
- _RequestCacheProtocol.cs
- TypeInitializationException.cs
- DataGridViewColumnConverter.cs
- HitTestFilterBehavior.cs
- WebDescriptionAttribute.cs
- Publisher.cs
- ShapingEngine.cs
- PrincipalPermission.cs
- RelationHandler.cs
- SafeNativeMethods.cs
- CopyAction.cs
- PolicyLevel.cs
- Substitution.cs
- IndentTextWriter.cs
- SettingsPropertyWrongTypeException.cs
- RegexCompilationInfo.cs
- SystemKeyConverter.cs
- SyndicationElementExtensionCollection.cs
- DataTable.cs
- StreamingContext.cs
- ManagementObjectSearcher.cs
- FontCacheLogic.cs
- Main.cs
- PagedDataSource.cs
- GenerateHelper.cs
- TypeDescriptionProvider.cs
- XmlSchemaAll.cs
- DataGridViewCellStyleEditor.cs
- WebServiceReceiveDesigner.cs
- ToolStripDesignerAvailabilityAttribute.cs
- GroupDescription.cs
- PeerHopCountAttribute.cs
- ZipPackage.cs
- ServiceDescriptionReflector.cs
- securitycriticaldataformultiplegetandset.cs
- BitmapEffectDrawingContextWalker.cs
- StateItem.cs
- RuleSettings.cs
- TextTreeInsertElementUndoUnit.cs
- ScriptResourceHandler.cs
- FrameworkTemplate.cs
- XmlAnyElementAttribute.cs
- ToolStripItemClickedEventArgs.cs
- unsafeIndexingFilterStream.cs
- TraceRecord.cs