Code:
/ FX-1434 / FX-1434 / 1.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
- ComponentTray.cs
- AnimatedTypeHelpers.cs
- DiscoveryEndpoint.cs
- SendMessageChannelCache.cs
- ExceptionHelpers.cs
- UnsafeNativeMethods.cs
- NodeFunctions.cs
- DataGridViewMethods.cs
- DbConnectionClosed.cs
- Debug.cs
- NotConverter.cs
- LineBreak.cs
- QilCloneVisitor.cs
- QueryOutputWriter.cs
- DataGridViewDataConnection.cs
- RangeBaseAutomationPeer.cs
- WebPartConnectionsConnectVerb.cs
- DrawingContextDrawingContextWalker.cs
- APCustomTypeDescriptor.cs
- QueryPageSettingsEventArgs.cs
- ColumnMap.cs
- LiteralControl.cs
- Match.cs
- PoisonMessageException.cs
- BitmapVisualManager.cs
- ToolStripDropDownButton.cs
- FrugalList.cs
- CustomErrorCollection.cs
- SimpleApplicationHost.cs
- Vector3DCollectionConverter.cs
- FusionWrap.cs
- AQNBuilder.cs
- controlskin.cs
- DllNotFoundException.cs
- BitmapSourceSafeMILHandle.cs
- ResourceExpression.cs
- EventListenerClientSide.cs
- SendingRequestEventArgs.cs
- BufferedGraphicsManager.cs
- Binding.cs
- Pts.cs
- DictationGrammar.cs
- ExplicitDiscriminatorMap.cs
- InterleavedZipPartStream.cs
- StateMachineSubscriptionManager.cs
- SQLDateTimeStorage.cs
- TypeProvider.cs
- QueryTask.cs
- Point4D.cs
- ProfileBuildProvider.cs
- LightweightCodeGenerator.cs
- IntAverageAggregationOperator.cs
- ScrollableControl.cs
- unitconverter.cs
- SQLByte.cs
- DiagnosticsConfigurationHandler.cs
- Rect3DConverter.cs
- SeparatorAutomationPeer.cs
- PageContent.cs
- ProfilePropertyNameValidator.cs
- OdbcTransaction.cs
- MemoryFailPoint.cs
- QilNode.cs
- StringWriter.cs
- StreamWithDictionary.cs
- latinshape.cs
- ComEventsHelper.cs
- ResumeStoryboard.cs
- DataGridViewTextBoxCell.cs
- TemplateColumn.cs
- Vector3DConverter.cs
- CommonXSendMessage.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- SourceFileInfo.cs
- WriteTimeStream.cs
- DataGridViewRowHeaderCell.cs
- returneventsaver.cs
- BaseAppDomainProtocolHandler.cs
- validationstate.cs
- Triangle.cs
- TTSEngineTypes.cs
- FamilyTypeface.cs
- ArcSegment.cs
- AutomationPatternInfo.cs
- ContainerVisual.cs
- XmlSchemaSimpleContentRestriction.cs
- AstNode.cs
- _ListenerAsyncResult.cs
- SettingsPropertyIsReadOnlyException.cs
- ConnectionPoint.cs
- HandlerMappingMemo.cs
- DateTimeHelper.cs
- XmlUrlResolver.cs
- EncodingInfo.cs
- WindowsGraphics2.cs
- _ChunkParse.cs
- Dynamic.cs
- EntityDataReader.cs
- JsonDataContract.cs
- PackageRelationship.cs