Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StringBlob.cs
- PageThemeParser.cs
- TableLayoutSettingsTypeConverter.cs
- NameValueConfigurationCollection.cs
- VerticalAlignConverter.cs
- OdbcUtils.cs
- Encoder.cs
- ScriptComponentDescriptor.cs
- CommonRemoteMemoryBlock.cs
- HttpHandlersSection.cs
- MetaDataInfo.cs
- PointAnimationUsingPath.cs
- ListItem.cs
- Vector3D.cs
- BamlLocalizer.cs
- infer.cs
- CngUIPolicy.cs
- LayoutEditorPart.cs
- jithelpers.cs
- ReadContentAsBinaryHelper.cs
- EmbossBitmapEffect.cs
- SqlCacheDependencyDatabase.cs
- SAPIEngineTypes.cs
- AssemblyBuilder.cs
- DataGridViewSelectedRowCollection.cs
- RenamedEventArgs.cs
- SectionUpdates.cs
- RedirectionProxy.cs
- MetadataException.cs
- Vertex.cs
- OleDbParameterCollection.cs
- RootBuilder.cs
- ThemeableAttribute.cs
- ProxySimple.cs
- FlowDocumentFormatter.cs
- ObjectRef.cs
- CodeAttributeArgument.cs
- StringUtil.cs
- DynamicQueryableWrapper.cs
- DesignerActionKeyboardBehavior.cs
- RecognizeCompletedEventArgs.cs
- ExpressionLexer.cs
- WebPartManagerDesigner.cs
- FunctionOverloadResolver.cs
- CollectionConverter.cs
- NavigationProgressEventArgs.cs
- DataGridViewLinkCell.cs
- ApplicationServicesHostFactory.cs
- BinaryMessageFormatter.cs
- ExtractorMetadata.cs
- AttachedPropertyMethodSelector.cs
- TypeSystem.cs
- MediaEntryAttribute.cs
- RequestCacheManager.cs
- TextBoxAutoCompleteSourceConverter.cs
- CommentEmitter.cs
- ExtendedPropertyCollection.cs
- XPathPatternParser.cs
- GeometryDrawing.cs
- RuleProcessor.cs
- VisualStyleInformation.cs
- IdentityValidationException.cs
- basemetadatamappingvisitor.cs
- WebPartEditVerb.cs
- AccessKeyManager.cs
- HealthMonitoringSection.cs
- TableLayoutPanelResizeGlyph.cs
- DesignerSerializationOptionsAttribute.cs
- FileDialogPermission.cs
- InputDevice.cs
- PasswordBoxAutomationPeer.cs
- WebPartVerbsEventArgs.cs
- DoubleAnimationUsingKeyFrames.cs
- ChangeConflicts.cs
- RenderingEventArgs.cs
- TableRow.cs
- FormsAuthenticationConfiguration.cs
- IconEditor.cs
- TextEndOfLine.cs
- TextParaClient.cs
- LoginUtil.cs
- SeekStoryboard.cs
- TemplateControl.cs
- Collection.cs
- RemoteWebConfigurationHost.cs
- CodeAttributeDeclarationCollection.cs
- MethodImplAttribute.cs
- ResourceDisplayNameAttribute.cs
- DataBindingExpressionBuilder.cs
- WSSecureConversationFeb2005.cs
- PostBackTrigger.cs
- SqlProvider.cs
- FixUpCollection.cs
- DirtyTextRange.cs
- DataMemberConverter.cs
- ObjectDataSourceDisposingEventArgs.cs
- CachedCompositeFamily.cs
- MergablePropertyAttribute.cs
- CustomPopupPlacement.cs
- Internal.cs