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
- QueryContinueDragEvent.cs
- HostDesigntimeLicenseContext.cs
- EntityAdapter.cs
- LassoSelectionBehavior.cs
- PersonalizationState.cs
- DataGridViewMethods.cs
- SqlInternalConnection.cs
- XmlSchemaValidator.cs
- ItemTypeToolStripMenuItem.cs
- GroupByQueryOperator.cs
- DoubleSumAggregationOperator.cs
- Binding.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- MediaScriptCommandRoutedEventArgs.cs
- HtmlTable.cs
- NativeWindow.cs
- TextParagraph.cs
- StringToken.cs
- SessionIDManager.cs
- ObjectDataSource.cs
- RangeValidator.cs
- ForwardPositionQuery.cs
- GetRecipientListRequest.cs
- UrlMappingsModule.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ModelTreeEnumerator.cs
- CalendarButtonAutomationPeer.cs
- ValidationResults.cs
- Attributes.cs
- SqlNotificationRequest.cs
- ParsedAttributeCollection.cs
- SerializationHelper.cs
- HttpInputStream.cs
- NavigationService.cs
- DataKey.cs
- LocalizabilityAttribute.cs
- WizardPanelChangingEventArgs.cs
- InternalUserCancelledException.cs
- _UriTypeConverter.cs
- SpeechDetectedEventArgs.cs
- Variant.cs
- PeerContact.cs
- ListViewInsertEventArgs.cs
- Timer.cs
- ControlPaint.cs
- GeometryDrawing.cs
- DSASignatureFormatter.cs
- ColorBlend.cs
- X509WindowsSecurityToken.cs
- arclist.cs
- KeyInterop.cs
- Delegate.cs
- SoapConverter.cs
- ComponentDispatcherThread.cs
- AnnotationResourceChangedEventArgs.cs
- WeakReferenceList.cs
- SQLInt64Storage.cs
- SafeEventLogReadHandle.cs
- MenuEventArgs.cs
- FontInfo.cs
- DetailsViewDesigner.cs
- Table.cs
- X509Chain.cs
- ServiceHttpModule.cs
- AutoCompleteStringCollection.cs
- EdmScalarPropertyAttribute.cs
- ComAdminWrapper.cs
- itemelement.cs
- StringExpressionSet.cs
- TextViewSelectionProcessor.cs
- ActivationArguments.cs
- NullableDecimalAverageAggregationOperator.cs
- cryptoapiTransform.cs
- BindingOperations.cs
- IPPacketInformation.cs
- XmlDigitalSignatureProcessor.cs
- MimeMultiPart.cs
- CommonProperties.cs
- ResourceProviderFactory.cs
- Tablet.cs
- GroupItemAutomationPeer.cs
- ImageIndexEditor.cs
- SystemWebCachingSectionGroup.cs
- SplitterPanel.cs
- ToolStripSplitStackLayout.cs
- MapPathBasedVirtualPathProvider.cs
- SamlAssertion.cs
- SecurityRuntime.cs
- ContainerUtilities.cs
- Activity.cs
- Thread.cs
- ReflectionHelper.cs
- ResourceCategoryAttribute.cs
- SelectionPatternIdentifiers.cs
- _AutoWebProxyScriptWrapper.cs
- CommandLibraryHelper.cs
- OneOfScalarConst.cs
- TextServicesDisplayAttributePropertyRanges.cs
- SoapSchemaImporter.cs
- DefaultPropertyAttribute.cs