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
- IUnknownConstantAttribute.cs
- TraceInternal.cs
- XmlElementList.cs
- ComponentFactoryHelpers.cs
- ApplicationDirectory.cs
- DateTimeAutomationPeer.cs
- Perspective.cs
- PermissionRequestEvidence.cs
- TableRowCollection.cs
- XmlSchema.cs
- PrinterSettings.cs
- DataTrigger.cs
- TriggerBase.cs
- GridItemCollection.cs
- StylusPointProperties.cs
- ReaderWriterLockSlim.cs
- WrapperEqualityComparer.cs
- ManualResetEventSlim.cs
- SoapSchemaMember.cs
- InternalConfigEventArgs.cs
- CharacterMetricsDictionary.cs
- ChildTable.cs
- MachineSettingsSection.cs
- Utility.cs
- SystemIPGlobalStatistics.cs
- TryCatch.cs
- SocketInformation.cs
- TypeBuilderInstantiation.cs
- NetTcpBindingElement.cs
- AuthenticationSchemesHelper.cs
- XmlSerializer.cs
- HttpProfileGroupBase.cs
- TextDecorationCollectionConverter.cs
- _SSPISessionCache.cs
- DrawingCollection.cs
- HttpCookie.cs
- EntityDataSourceMemberPath.cs
- BuildProvidersCompiler.cs
- FileLogRecord.cs
- PersonalizationAdministration.cs
- MessageSecurityVersion.cs
- KeyValueSerializer.cs
- FlowDocument.cs
- SqlDependencyListener.cs
- CacheEntry.cs
- ValidationResult.cs
- Int32.cs
- ClientScriptItemCollection.cs
- SoapClientProtocol.cs
- ClientTarget.cs
- Margins.cs
- Graphics.cs
- TextSpan.cs
- WebPartConnectionsEventArgs.cs
- __ConsoleStream.cs
- NetCodeGroup.cs
- RelationshipSet.cs
- DefaultSettingsSection.cs
- RemoteDebugger.cs
- ObjectReaderCompiler.cs
- DesignerCategoryAttribute.cs
- HttpPostClientProtocol.cs
- FixedTextContainer.cs
- COAUTHINFO.cs
- PersistenceTypeAttribute.cs
- PointAnimationClockResource.cs
- AppSettingsReader.cs
- MailDefinition.cs
- LineUtil.cs
- WebPartDisplayModeCollection.cs
- XamlStyleSerializer.cs
- ServiceOperationParameter.cs
- ListenerHandler.cs
- MobileContainerDesigner.cs
- TriggerActionCollection.cs
- XmlSerializableServices.cs
- DynamicObject.cs
- DPCustomTypeDescriptor.cs
- DuplexSecurityProtocolFactory.cs
- DescendentsWalker.cs
- UnionCqlBlock.cs
- PageRouteHandler.cs
- BooleanFacetDescriptionElement.cs
- WebPartZoneBase.cs
- UIPermission.cs
- BaseProcessProtocolHandler.cs
- ExpandCollapsePattern.cs
- DateTimeUtil.cs
- WindowsSspiNegotiation.cs
- NamespaceDecl.cs
- ResourceDictionary.cs
- UInt32.cs
- ListViewItemEventArgs.cs
- DBConnection.cs
- CheckBox.cs
- LineSegment.cs
- TemplatedAdorner.cs
- InvokeMethodActivity.cs
- ConfigXmlCDataSection.cs
- FloatSumAggregationOperator.cs