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
- DbCommandDefinition.cs
- ZipQueryOperator.cs
- BitmapPalette.cs
- EventItfInfo.cs
- XmlAnyAttributeAttribute.cs
- ProfileElement.cs
- SessionPageStatePersister.cs
- TextViewBase.cs
- EditorPartChrome.cs
- ConstraintCollection.cs
- DocumentViewerConstants.cs
- ADMembershipUser.cs
- TagPrefixCollection.cs
- NoClickablePointException.cs
- Multiply.cs
- ItemCheckEvent.cs
- TagPrefixCollection.cs
- WsdlServiceChannelBuilder.cs
- DataGridViewTextBoxEditingControl.cs
- ServiceInstanceProvider.cs
- LayoutTableCell.cs
- Freezable.cs
- AssociationType.cs
- Expr.cs
- IndexedEnumerable.cs
- PriorityChain.cs
- FtpCachePolicyElement.cs
- HandlerBase.cs
- BuilderPropertyEntry.cs
- SoapReflectionImporter.cs
- WebPartEditVerb.cs
- ImageConverter.cs
- ServiceNameElement.cs
- OledbConnectionStringbuilder.cs
- MenuItem.cs
- ObjectAssociationEndMapping.cs
- SchemaName.cs
- AssociationTypeEmitter.cs
- NamespaceInfo.cs
- _AcceptOverlappedAsyncResult.cs
- ViewManager.cs
- UnSafeCharBuffer.cs
- Header.cs
- TextBoxAutoCompleteSourceConverter.cs
- ResourceContainer.cs
- DataGridCommandEventArgs.cs
- XamlTemplateSerializer.cs
- ConfigurationSectionGroupCollection.cs
- ExpressionBuilder.cs
- XmlNamespaceManager.cs
- AssociationSetEnd.cs
- DateTimeFormatInfo.cs
- NotifyInputEventArgs.cs
- PathData.cs
- ByteStreamMessageUtility.cs
- FontResourceCache.cs
- KnownColorTable.cs
- COMException.cs
- TextCollapsingProperties.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ImportCatalogPart.cs
- Section.cs
- MatrixIndependentAnimationStorage.cs
- LocalClientSecuritySettingsElement.cs
- CacheChildrenQuery.cs
- MailHeaderInfo.cs
- XmlValidatingReaderImpl.cs
- XmlChoiceIdentifierAttribute.cs
- IndependentAnimationStorage.cs
- WindowsListViewSubItem.cs
- MetricEntry.cs
- Nodes.cs
- WmfPlaceableFileHeader.cs
- MediaTimeline.cs
- ObjectMaterializedEventArgs.cs
- Hashtable.cs
- InvalidEnumArgumentException.cs
- ComponentEvent.cs
- LexicalChunk.cs
- FileChangesMonitor.cs
- Pair.cs
- CodeGen.cs
- SystemTcpStatistics.cs
- RSAPKCS1SignatureFormatter.cs
- DataServiceExpressionVisitor.cs
- CodeTypeOfExpression.cs
- SamlNameIdentifierClaimResource.cs
- CompensatableSequenceActivity.cs
- SessionPageStatePersister.cs
- ITreeGenerator.cs
- MemberRelationshipService.cs
- FieldAccessException.cs
- WebBrowserContainer.cs
- RadioButtonAutomationPeer.cs
- Mouse.cs
- IPAddress.cs
- ReadOnlyObservableCollection.cs
- Error.cs
- WebPageTraceListener.cs
- VisualStyleTypesAndProperties.cs