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
- LinqDataSourceUpdateEventArgs.cs
- SystemColorTracker.cs
- CLSCompliantAttribute.cs
- TypeInitializationException.cs
- ConstructorNeedsTagAttribute.cs
- DrawingGroup.cs
- Content.cs
- JournalNavigationScope.cs
- UIElement3D.cs
- Conditional.cs
- BridgeDataRecord.cs
- XhtmlBasicLiteralTextAdapter.cs
- _ConnectionGroup.cs
- AccessViolationException.cs
- WindowsScrollBarBits.cs
- Assembly.cs
- sqlstateclientmanager.cs
- DataMisalignedException.cs
- PowerStatus.cs
- IIS7UserPrincipal.cs
- DataPagerFieldCollection.cs
- DataBinding.cs
- WebChannelFactory.cs
- ResourcesGenerator.cs
- AxHost.cs
- Psha1DerivedKeyGenerator.cs
- HostedElements.cs
- TransformedBitmap.cs
- UnionCodeGroup.cs
- HtmlInputText.cs
- TemplateBaseAction.cs
- CodeIdentifiers.cs
- RSAOAEPKeyExchangeFormatter.cs
- DNS.cs
- StyleXamlParser.cs
- TypeSystemHelpers.cs
- HttpAsyncResult.cs
- StylusCaptureWithinProperty.cs
- RankException.cs
- SmiTypedGetterSetter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ExpressionNode.cs
- DataServiceQueryOfT.cs
- WindowsIdentity.cs
- _ConnectionGroup.cs
- ButtonField.cs
- VariantWrapper.cs
- WebBrowserNavigatedEventHandler.cs
- WebPartConnectionsDisconnectVerb.cs
- GridViewCommandEventArgs.cs
- ControlAdapter.cs
- PropertyDescriptor.cs
- DuplexSecurityProtocolFactory.cs
- GestureRecognizer.cs
- Boolean.cs
- IIS7WorkerRequest.cs
- NavigationFailedEventArgs.cs
- SQLConvert.cs
- PropertyCollection.cs
- ListenDesigner.cs
- ControlCollection.cs
- EncryptedPackageFilter.cs
- EntityCommandCompilationException.cs
- PropVariant.cs
- Splitter.cs
- LinkedResource.cs
- ConfigurationManagerHelperFactory.cs
- FontUnitConverter.cs
- XamlSerializer.cs
- DataGridColumnCollection.cs
- LineSegment.cs
- MetadataArtifactLoaderCompositeFile.cs
- CqlLexerHelpers.cs
- MexNamedPipeBindingElement.cs
- StatusBar.cs
- TemplatedAdorner.cs
- ReferencedType.cs
- Pipe.cs
- DictionaryMarkupSerializer.cs
- CompiledXpathExpr.cs
- ImpersonateTokenRef.cs
- Predicate.cs
- EventProperty.cs
- DataShape.cs
- WebPartEventArgs.cs
- Latin1Encoding.cs
- UrlMapping.cs
- ScriptingSectionGroup.cs
- HwndMouseInputProvider.cs
- Scanner.cs
- BrowserTree.cs
- PolygonHotSpot.cs
- MetadataHelper.cs
- TrustLevel.cs
- SystemIPv4InterfaceProperties.cs
- XmlnsPrefixAttribute.cs
- LabelInfo.cs
- DocumentReference.cs
- DynamicArgumentDialog.cs
- ResourceReader.cs