Code:
/ DotNET / DotNET / 8.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
- StartUpEventArgs.cs
- ElementHostPropertyMap.cs
- XmlDataCollection.cs
- DelayedRegex.cs
- StateDesignerConnector.cs
- Serializer.cs
- MethodBody.cs
- autovalidator.cs
- ProviderCommandInfoUtils.cs
- EntityDesignerUtils.cs
- PrivilegedConfigurationManager.cs
- FlowDocumentFormatter.cs
- StateWorkerRequest.cs
- AttributeQuery.cs
- ImageButton.cs
- RegexWriter.cs
- OleDbConnectionInternal.cs
- RoleManagerSection.cs
- UniqueIdentifierService.cs
- SiteMembershipCondition.cs
- CultureTable.cs
- TextFragmentEngine.cs
- PointAnimationUsingPath.cs
- ProtocolException.cs
- TrustVersion.cs
- TextBoxBase.cs
- FontConverter.cs
- Rect3D.cs
- ErrorLog.cs
- EnumType.cs
- HtmlInputHidden.cs
- DataObjectEventArgs.cs
- AuthStoreRoleProvider.cs
- Selection.cs
- ApplyTemplatesAction.cs
- BooleanAnimationUsingKeyFrames.cs
- securestring.cs
- BlurEffect.cs
- ObjectDisposedException.cs
- DynamicResourceExtensionConverter.cs
- ThreadExceptionDialog.cs
- SQLMoneyStorage.cs
- ConnectAlgorithms.cs
- ScriptMethodAttribute.cs
- XmlSchemaChoice.cs
- QuaternionAnimationBase.cs
- PointAnimationUsingKeyFrames.cs
- RtfControls.cs
- DropShadowBitmapEffect.cs
- ValueTypeFixupInfo.cs
- EventMappingSettingsCollection.cs
- Run.cs
- HMACRIPEMD160.cs
- ProjectedWrapper.cs
- WebPartEventArgs.cs
- NativeMethods.cs
- MatchAllMessageFilter.cs
- SiteMapNodeItemEventArgs.cs
- WsiProfilesElementCollection.cs
- MenuItem.cs
- UnicastIPAddressInformationCollection.cs
- SafeBitVector32.cs
- DeclarativeCatalogPart.cs
- GenericsNotImplementedException.cs
- ReadOnlyObservableCollection.cs
- TraceSection.cs
- WorkflowOwnerAsyncResult.cs
- ChtmlImageAdapter.cs
- SmiEventSink_Default.cs
- ByValueEqualityComparer.cs
- Timeline.cs
- TrackingLocationCollection.cs
- WebCodeGenerator.cs
- FilterException.cs
- EventLogTraceListener.cs
- FormViewUpdatedEventArgs.cs
- SqlWebEventProvider.cs
- WindowsAuthenticationModule.cs
- RequestCachePolicy.cs
- MenuTracker.cs
- ComPlusThreadInitializer.cs
- InternalBase.cs
- NativeMethods.cs
- SingleStorage.cs
- GridViewRowPresenterBase.cs
- ClientUrlResolverWrapper.cs
- XmlSchemaSimpleTypeUnion.cs
- Tracer.cs
- PagerSettings.cs
- AdPostCacheSubstitution.cs
- FunctionImportMapping.cs
- XmlSchemaAttributeGroup.cs
- InternalCache.cs
- WebBrowserUriTypeConverter.cs
- NameValueConfigurationElement.cs
- ListViewInsertedEventArgs.cs
- Debug.cs
- Utils.cs
- TemplateXamlParser.cs
- PeerResolver.cs