Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / ConfigUtil.cs / 2 / ConfigUtil.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System; using System.Threading; using System.Configuration; using System.Xml; using System.Web.Compilation; using System.Web.Util; internal class ConfigUtil { private ConfigUtil() { } internal static void CheckBaseType(Type expectedBaseType, Type userBaseType, string propertyName, ConfigurationElement configElement) { // Make sure the base type is valid if (!expectedBaseType.IsAssignableFrom(userBaseType)) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_type_to_inherit_from, userBaseType.FullName, expectedBaseType.FullName), configElement.ElementInformation.Properties[propertyName].Source, configElement.ElementInformation.Properties[propertyName].LineNumber); } } internal static Type GetType(string typeName, string propertyName, ConfigurationElement configElement, XmlNode node, bool checkAptcaBit, bool ignoreCase) { // We should get either a propertyName/configElement or node, but not both. // They are used only for error reporting. Debug.Assert((propertyName != null) != (node != null)); Type val; try { val = BuildManager.GetType(typeName, true /*throwOnError*/, ignoreCase); } catch (Exception e) { if (e is ThreadAbortException || e is StackOverflowException || e is OutOfMemoryException) { throw; } if (node != null) { throw new ConfigurationErrorsException(e.Message, e, node); } else { if (configElement != null) { throw new ConfigurationErrorsException(e.Message, e, configElement.ElementInformation.Properties[propertyName].Source, configElement.ElementInformation.Properties[propertyName].LineNumber); } else { throw new ConfigurationErrorsException(e.Message, e); } } } // If we're not in full trust, only allow types that have the APTCA bit (ASURT 139687), // unless the checkAptcaBit flag is false if (checkAptcaBit) { if (node != null) { HttpRuntime.FailIfNoAPTCABit(val, node); } else { HttpRuntime.FailIfNoAPTCABit(val, configElement != null ? configElement.ElementInformation : null, propertyName); } } return val; } internal static Type GetType(string typeName, string propertyName, ConfigurationElement configElement) { return GetType(typeName, propertyName, configElement, true /*checkAptcaBit*/); } internal static Type GetType(string typeName, string propertyName, ConfigurationElement configElement, bool checkAptcaBit) { return GetType(typeName, propertyName, configElement, checkAptcaBit, false); } internal static Type GetType(string typeName, string propertyName, ConfigurationElement configElement, bool checkAptcaBit, bool ignoreCase) { return GetType(typeName, propertyName, configElement, null /*node*/, checkAptcaBit, ignoreCase); } internal static Type GetType(string typeName, XmlNode node) { return GetType(typeName, node, false /*ignoreCase*/); } internal static Type GetType(string typeName, XmlNode node, bool ignoreCase) { return GetType(typeName, null, null, node, true /*checkAptcaBit*/, ignoreCase); } internal static void CheckAssignableType(Type baseType, Type type, ConfigurationElement configElement, string propertyName) { if (!baseType.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), configElement.ElementInformation.Properties[propertyName].Source, configElement.ElementInformation.Properties[propertyName].LineNumber); } } internal static void CheckAssignableType(Type baseType, Type baseType2, Type type, ConfigurationElement configElement, string propertyName) { if (!baseType.IsAssignableFrom(type) && !baseType2.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), configElement.ElementInformation.Properties[propertyName].Source, configElement.ElementInformation.Properties[propertyName].LineNumber); } } internal static bool IsTypeHandlerOrFactory(Type t) { return typeof(IHttpHandler).IsAssignableFrom(t) || typeof(IHttpHandlerFactory).IsAssignableFrom(t); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DropShadowBitmapEffect.cs
- ColorAnimation.cs
- DesignerLoader.cs
- PartialCachingControl.cs
- SerializationFieldInfo.cs
- COSERVERINFO.cs
- PointValueSerializer.cs
- SoapIgnoreAttribute.cs
- ButtonPopupAdapter.cs
- BamlBinaryWriter.cs
- FormView.cs
- RemotingService.cs
- WebEventTraceProvider.cs
- BaseParagraph.cs
- TextEndOfLine.cs
- SchemaAttDef.cs
- ExternalException.cs
- LoginAutoFormat.cs
- TextBoxView.cs
- DashStyle.cs
- EventLogger.cs
- TableLayout.cs
- DrawingContext.cs
- DataServiceEntityAttribute.cs
- oledbconnectionstring.cs
- DataFieldCollectionEditor.cs
- ConnectivityStatus.cs
- sqlcontext.cs
- ConfigurationElement.cs
- DataRecord.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ViewValidator.cs
- Icon.cs
- DefaultAssemblyResolver.cs
- UnmanagedHandle.cs
- BaseServiceProvider.cs
- RightsManagementEncryptedStream.cs
- SqlCachedBuffer.cs
- DrawingImage.cs
- PreProcessor.cs
- TableLayoutColumnStyleCollection.cs
- DiagnosticsConfiguration.cs
- RegexCompiler.cs
- MultiView.cs
- SortFieldComparer.cs
- CacheMemory.cs
- ListView.cs
- SourceElementsCollection.cs
- QuaternionKeyFrameCollection.cs
- Message.cs
- FeedUtils.cs
- DescendantOverDescendantQuery.cs
- MachineSettingsSection.cs
- EntityProxyTypeInfo.cs
- DocumentReference.cs
- BehaviorEditorPart.cs
- InvalidDataException.cs
- HtmlTernaryTree.cs
- SafeFindHandle.cs
- SchemaEntity.cs
- RowSpanVector.cs
- XsdBuildProvider.cs
- FileBasedResourceGroveler.cs
- LocalizationParserHooks.cs
- FixedSOMTableCell.cs
- LineInfo.cs
- EditorPartCollection.cs
- SystemKeyConverter.cs
- WebPartVerb.cs
- FileUtil.cs
- BaseDataBoundControl.cs
- XsltConvert.cs
- ASCIIEncoding.cs
- ValidationErrorCollection.cs
- CachedTypeface.cs
- SqlFormatter.cs
- SequentialOutput.cs
- SecurityHelper.cs
- DocumentAutomationPeer.cs
- SmtpDigestAuthenticationModule.cs
- TimelineClockCollection.cs
- DispatchChannelSink.cs
- DynamicResourceExtensionConverter.cs
- System.Data.OracleClient_BID.cs
- DocumentPropertiesDialog.cs
- StoragePropertyMapping.cs
- OperationResponse.cs
- HttpListenerRequest.cs
- SqlConnectionStringBuilder.cs
- TickBar.cs
- PropertyNames.cs
- RepeatButtonAutomationPeer.cs
- RC2CryptoServiceProvider.cs
- ApplicationInterop.cs
- SoapCommonClasses.cs
- NodeFunctions.cs
- HeaderUtility.cs
- AutomationPatternInfo.cs
- SocketException.cs
- Label.cs