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
- BindingMemberInfo.cs
- DbDeleteCommandTree.cs
- ContainerControl.cs
- SimpleHandlerFactory.cs
- StaticExtension.cs
- MenuItem.cs
- BoolExpression.cs
- TreeView.cs
- Graph.cs
- ArglessEventHandlerProxy.cs
- ProjectionPath.cs
- PerformanceCounterLib.cs
- BinaryReader.cs
- RoutedPropertyChangedEventArgs.cs
- DataColumnChangeEvent.cs
- BinaryUtilClasses.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- InfoCardTraceRecord.cs
- ListMarkerSourceInfo.cs
- DeviceSpecificDialogCachedState.cs
- DockingAttribute.cs
- TransportationConfigurationTypeInstallComponent.cs
- BamlTreeNode.cs
- ListDictionaryInternal.cs
- KeyToListMap.cs
- SQLInt64Storage.cs
- SafeSystemMetrics.cs
- RtType.cs
- FormParameter.cs
- TextStore.cs
- GridViewRowCollection.cs
- AmbientProperties.cs
- DecoderFallback.cs
- XamlPointCollectionSerializer.cs
- SudsWriter.cs
- NavigationHelper.cs
- StickyNoteContentControl.cs
- ZipIOLocalFileBlock.cs
- ConstraintEnumerator.cs
- TableLayoutRowStyleCollection.cs
- CacheEntry.cs
- MimeXmlImporter.cs
- DiscoveryMessageProperty.cs
- DispatcherFrame.cs
- MembershipPasswordException.cs
- WebServiceMethodData.cs
- Certificate.cs
- XmlBinaryWriterSession.cs
- DocumentApplicationDocumentViewer.cs
- UTF8Encoding.cs
- ZeroOpNode.cs
- HtmlTableRow.cs
- HttpApplicationFactory.cs
- ReferentialConstraintRoleElement.cs
- ToggleButtonAutomationPeer.cs
- OperatorExpressions.cs
- CompModSwitches.cs
- OleDbParameter.cs
- FilterElement.cs
- EnumValAlphaComparer.cs
- UriExt.cs
- SiteMembershipCondition.cs
- Package.cs
- LoadedOrUnloadedOperation.cs
- IncrementalCompileAnalyzer.cs
- PersianCalendar.cs
- ProxyRpc.cs
- ManagementObject.cs
- ReadContentAsBinaryHelper.cs
- IconEditor.cs
- Sql8ExpressionRewriter.cs
- WorkerRequest.cs
- StatusBarItem.cs
- ObservableDictionary.cs
- StyleBamlTreeBuilder.cs
- SetUserPreferenceRequest.cs
- HideDisabledControlAdapter.cs
- MtomMessageEncodingElement.cs
- SslStream.cs
- WhitespaceReader.cs
- RegexWorker.cs
- DragDeltaEventArgs.cs
- TableLayoutColumnStyleCollection.cs
- SoapProtocolImporter.cs
- RowSpanVector.cs
- RadioButtonAutomationPeer.cs
- DesignerActionVerbList.cs
- WebProxyScriptElement.cs
- DesignerSerializationVisibilityAttribute.cs
- XmlWhitespace.cs
- DesignerTransactionCloseEvent.cs
- InvalidAsynchronousStateException.cs
- PinnedBufferMemoryStream.cs
- Transform3D.cs
- ConditionalAttribute.cs
- xmlglyphRunInfo.cs
- DBCommand.cs
- SoapSchemaExporter.cs
- PointHitTestResult.cs
- ArrayWithOffset.cs