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
- XsdBuildProvider.cs
- WhitespaceRuleLookup.cs
- CompilerGlobalScopeAttribute.cs
- SettingsPropertyWrongTypeException.cs
- XmlWhitespace.cs
- ToolStripItemEventArgs.cs
- StateWorkerRequest.cs
- AmbiguousMatchException.cs
- InputLanguage.cs
- sitestring.cs
- XmlC14NWriter.cs
- GZipStream.cs
- EmptyControlCollection.cs
- Profiler.cs
- UserCancellationException.cs
- DataGridColumn.cs
- PreloadedPackages.cs
- URLIdentityPermission.cs
- XsltOutput.cs
- DrawingContextDrawingContextWalker.cs
- ConfigsHelper.cs
- MultipleViewPattern.cs
- DragDropManager.cs
- CookieProtection.cs
- XPathItem.cs
- CustomError.cs
- CreateUserWizard.cs
- TreePrinter.cs
- OdbcConnectionPoolProviderInfo.cs
- MediaTimeline.cs
- StylusPointPropertyInfo.cs
- CompiledQuery.cs
- ListDictionary.cs
- FrameworkElementFactoryMarkupObject.cs
- CfgRule.cs
- TPLETWProvider.cs
- UrlMappingsSection.cs
- Action.cs
- TypeListConverter.cs
- ConstraintConverter.cs
- RoleService.cs
- CodeTypeReferenceCollection.cs
- FileDialog.cs
- StorageEntityTypeMapping.cs
- WebChannelFactory.cs
- ResourceProviderFactory.cs
- PresentationSource.cs
- FileDataSourceCache.cs
- Transform.cs
- JumpPath.cs
- ImpersonateTokenRef.cs
- IssuanceTokenProviderBase.cs
- KeyboardDevice.cs
- DiagnosticsConfiguration.cs
- ApplicationInterop.cs
- SkewTransform.cs
- WebPartEventArgs.cs
- CqlQuery.cs
- SynchronizedInputProviderWrapper.cs
- OleDbInfoMessageEvent.cs
- ModuleBuilder.cs
- PersonalizationState.cs
- SystemBrushes.cs
- SizeConverter.cs
- FunctionGenerator.cs
- TextureBrush.cs
- RuleAction.cs
- TransformGroup.cs
- WebPartMovingEventArgs.cs
- SerializationFieldInfo.cs
- SHA256.cs
- XmlSchemaParticle.cs
- StreamGeometryContext.cs
- WinInet.cs
- SqlParameter.cs
- EnumDataContract.cs
- XhtmlBasicPageAdapter.cs
- HandledMouseEvent.cs
- CodeArrayCreateExpression.cs
- Privilege.cs
- Scene3D.cs
- safelinkcollection.cs
- PeerApplication.cs
- UTF8Encoding.cs
- PartitionResolver.cs
- HttpCachePolicyBase.cs
- namescope.cs
- ItemsControlAutomationPeer.cs
- BStrWrapper.cs
- NavigationExpr.cs
- XmlSchemaSequence.cs
- TypeConverter.cs
- TypedReference.cs
- DataGridSortCommandEventArgs.cs
- streamingZipPartStream.cs
- MessageBox.cs
- CodeArrayIndexerExpression.cs
- SmiTypedGetterSetter.cs
- EntityContainer.cs
- VScrollProperties.cs