Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / ConnectionStringsExpressionBuilder.cs / 2 / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- hwndwrapper.cs
- ConfigViewGenerator.cs
- Stylus.cs
- FontConverter.cs
- CaseInsensitiveHashCodeProvider.cs
- FirstMatchCodeGroup.cs
- SqlDataReaderSmi.cs
- ApplicationHost.cs
- ToolStripActionList.cs
- AssemblyBuilderData.cs
- FieldNameLookup.cs
- GeneratedView.cs
- StoreContentChangedEventArgs.cs
- URLBuilder.cs
- SafeMILHandle.cs
- ValidationHelper.cs
- ViewBase.cs
- SqlOuterApplyReducer.cs
- UncommonField.cs
- ControlEvent.cs
- InheritanceAttribute.cs
- GlobalEventManager.cs
- XmlDataImplementation.cs
- FilterException.cs
- LinearGradientBrush.cs
- recordstatescratchpad.cs
- DataGridBoolColumn.cs
- ZipIOExtraField.cs
- DesignerSerializerAttribute.cs
- Parser.cs
- XmlSchemaImporter.cs
- ExpressionContext.cs
- DayRenderEvent.cs
- CodeIndexerExpression.cs
- RankException.cs
- X509Utils.cs
- DataMemberConverter.cs
- Keywords.cs
- SystemDropShadowChrome.cs
- ComplexObject.cs
- ToolboxSnapDragDropEventArgs.cs
- SharedPerformanceCounter.cs
- RoleService.cs
- AnimatedTypeHelpers.cs
- SmiGettersStream.cs
- FormsAuthenticationUser.cs
- KeyFrames.cs
- XmlStringTable.cs
- WebPartRestoreVerb.cs
- DetailsViewRow.cs
- Canonicalizers.cs
- ProxyWebPartConnectionCollection.cs
- DmlSqlGenerator.cs
- ZoneMembershipCondition.cs
- DataColumnSelectionConverter.cs
- ReadOnlyPropertyMetadata.cs
- CultureInfo.cs
- MatrixIndependentAnimationStorage.cs
- PopupRoot.cs
- ContextMarshalException.cs
- ReadOnlyAttribute.cs
- TextChange.cs
- DataGridViewCellFormattingEventArgs.cs
- XmlIterators.cs
- EditorAttribute.cs
- GridViewColumnCollectionChangedEventArgs.cs
- Panel.cs
- FlowDocumentPageViewerAutomationPeer.cs
- TokenBasedSet.cs
- ResourceExpressionEditor.cs
- PersistenceProviderElement.cs
- TraceShell.cs
- CapacityStreamGeometryContext.cs
- OpenTypeMethods.cs
- ButtonBaseAdapter.cs
- XmlSchemas.cs
- PrefixHandle.cs
- SignatureToken.cs
- XmlAttributeCollection.cs
- GeneralTransform.cs
- XmlDataLoader.cs
- CodeDomConfigurationHandler.cs
- PackageRelationship.cs
- BindableTemplateBuilder.cs
- NotifyIcon.cs
- UniqueIdentifierService.cs
- infer.cs
- DataGridTable.cs
- LabelAutomationPeer.cs
- SHA1Cng.cs
- CmsInterop.cs
- ScriptReferenceEventArgs.cs
- DataGridClipboardCellContent.cs
- Matrix3D.cs
- SimpleRecyclingCache.cs
- Helpers.cs
- ConsumerConnectionPoint.cs
- BitmapCodecInfoInternal.cs
- CodeDefaultValueExpression.cs
- DataServiceQueryOfT.cs