Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartTransformerAttribute.cs / 1 / WebPartTransformerAttribute.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Security.Permissions; [AttributeUsage(AttributeTargets.Class)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class WebPartTransformerAttribute : Attribute { // Cache provider and consumer types for each WebPartTransformer type. We store an array of // 2 Types (consumer, provider) indexed by transformer type. private static readonly Hashtable transformerCache = Hashtable.Synchronized(new Hashtable()); private Type _consumerType; private Type _providerType; public WebPartTransformerAttribute(Type consumerType, Type providerType) { if (consumerType == null) { throw new ArgumentNullException("consumerType"); } if (providerType == null) { throw new ArgumentNullException("providerType"); } _consumerType = consumerType; _providerType = providerType; } public Type ConsumerType { get { return _consumerType; } } public Type ProviderType { get { return _providerType; } } public static Type GetConsumerType(Type transformerType) { return GetTransformerTypes(transformerType)[0]; } public static Type GetProviderType(Type transformerType) { return GetTransformerTypes(transformerType)[1]; } ////// Returns the types a transformer can accept on its "connection points" /// private static Type[] GetTransformerTypes(Type transformerType) { if (transformerType == null) { throw new ArgumentNullException("transformerType"); } if (!transformerType.IsSubclassOf(typeof(WebPartTransformer))) { throw new InvalidOperationException( SR.GetString(SR.WebPartTransformerAttribute_NotTransformer, transformerType.FullName)); } Type[] types = (Type[])transformerCache[transformerType]; if (types == null) { types = GetTransformerTypesFromAttribute(transformerType); transformerCache[transformerType] = types; } return types; } private static Type[] GetTransformerTypesFromAttribute(Type transformerType) { Type[] types = new Type[2]; object[] attributes = transformerType.GetCustomAttributes(typeof(WebPartTransformerAttribute), true); // WebPartTransformerAttribute.AllowMultiple is false Debug.Assert(attributes.Length == 0 || attributes.Length == 1); if (attributes.Length == 1) { WebPartTransformerAttribute attribute = (WebPartTransformerAttribute)attributes[0]; if (attribute.ConsumerType == attribute.ProviderType) { throw new InvalidOperationException(SR.GetString(SR.WebPartTransformerAttribute_SameTypes)); } types[0] = attribute.ConsumerType; types[1] = attribute.ProviderType; } else { throw new InvalidOperationException( SR.GetString(SR.WebPartTransformerAttribute_Missing, transformerType.FullName)); } return types; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Security.Permissions; [AttributeUsage(AttributeTargets.Class)] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class WebPartTransformerAttribute : Attribute { // Cache provider and consumer types for each WebPartTransformer type. We store an array of // 2 Types (consumer, provider) indexed by transformer type. private static readonly Hashtable transformerCache = Hashtable.Synchronized(new Hashtable()); private Type _consumerType; private Type _providerType; public WebPartTransformerAttribute(Type consumerType, Type providerType) { if (consumerType == null) { throw new ArgumentNullException("consumerType"); } if (providerType == null) { throw new ArgumentNullException("providerType"); } _consumerType = consumerType; _providerType = providerType; } public Type ConsumerType { get { return _consumerType; } } public Type ProviderType { get { return _providerType; } } public static Type GetConsumerType(Type transformerType) { return GetTransformerTypes(transformerType)[0]; } public static Type GetProviderType(Type transformerType) { return GetTransformerTypes(transformerType)[1]; } ////// Returns the types a transformer can accept on its "connection points" /// private static Type[] GetTransformerTypes(Type transformerType) { if (transformerType == null) { throw new ArgumentNullException("transformerType"); } if (!transformerType.IsSubclassOf(typeof(WebPartTransformer))) { throw new InvalidOperationException( SR.GetString(SR.WebPartTransformerAttribute_NotTransformer, transformerType.FullName)); } Type[] types = (Type[])transformerCache[transformerType]; if (types == null) { types = GetTransformerTypesFromAttribute(transformerType); transformerCache[transformerType] = types; } return types; } private static Type[] GetTransformerTypesFromAttribute(Type transformerType) { Type[] types = new Type[2]; object[] attributes = transformerType.GetCustomAttributes(typeof(WebPartTransformerAttribute), true); // WebPartTransformerAttribute.AllowMultiple is false Debug.Assert(attributes.Length == 0 || attributes.Length == 1); if (attributes.Length == 1) { WebPartTransformerAttribute attribute = (WebPartTransformerAttribute)attributes[0]; if (attribute.ConsumerType == attribute.ProviderType) { throw new InvalidOperationException(SR.GetString(SR.WebPartTransformerAttribute_SameTypes)); } types[0] = attribute.ConsumerType; types[1] = attribute.ProviderType; } else { throw new InvalidOperationException( SR.GetString(SR.WebPartTransformerAttribute_Missing, transformerType.FullName)); } return types; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeDelegateInvokeExpression.cs
- FileUtil.cs
- ServiceBuildProvider.cs
- ViewKeyConstraint.cs
- DataGridViewBindingCompleteEventArgs.cs
- SpeechRecognizer.cs
- Dynamic.cs
- StreamHelper.cs
- IApplicationTrustManager.cs
- PagerSettings.cs
- _DisconnectOverlappedAsyncResult.cs
- RulePatternOps.cs
- FontStretch.cs
- CharKeyFrameCollection.cs
- TriggerAction.cs
- CorePropertiesFilter.cs
- TextChangedEventArgs.cs
- SBCSCodePageEncoding.cs
- SwitchLevelAttribute.cs
- DataViewSetting.cs
- MappableObjectManager.cs
- ColorKeyFrameCollection.cs
- ViewStateException.cs
- ObjectSpanRewriter.cs
- PropertyGrid.cs
- xmlglyphRunInfo.cs
- TypeLibConverter.cs
- ListSortDescription.cs
- WebControlAdapter.cs
- FlowDocumentFormatter.cs
- StreamWithDictionary.cs
- TypedCompletedAsyncResult.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- Inflater.cs
- DataChangedEventManager.cs
- AutomationIdentifierGuids.cs
- MetadataArtifactLoaderComposite.cs
- PrePostDescendentsWalker.cs
- UIElementCollection.cs
- WindowAutomationPeer.cs
- TableNameAttribute.cs
- ModelUtilities.cs
- WebConfigurationFileMap.cs
- SystemGatewayIPAddressInformation.cs
- SiteMapHierarchicalDataSourceView.cs
- AnnotationHelper.cs
- ViewEventArgs.cs
- COM2PictureConverter.cs
- SafeReversePInvokeHandle.cs
- XmlHierarchicalEnumerable.cs
- StringConverter.cs
- InkCanvasAutomationPeer.cs
- WrappingXamlSchemaContext.cs
- ClassHandlersStore.cs
- RowBinding.cs
- XmlReaderDelegator.cs
- StyleCollection.cs
- WmfPlaceableFileHeader.cs
- GeometryGroup.cs
- DmlSqlGenerator.cs
- MulticastDelegate.cs
- Matrix.cs
- EdmComplexPropertyAttribute.cs
- HttpAsyncResult.cs
- KeyValuePair.cs
- MetadataUtilsSmi.cs
- RangeValuePatternIdentifiers.cs
- StateFinalizationActivity.cs
- Binding.cs
- BlobPersonalizationState.cs
- DataSetMappper.cs
- CellIdBoolean.cs
- ModelPropertyCollectionImpl.cs
- CodeTypeReferenceCollection.cs
- Style.cs
- RectAnimation.cs
- ParameterElementCollection.cs
- HwndSourceKeyboardInputSite.cs
- RawStylusInputCustomDataList.cs
- DataGridViewAddColumnDialog.cs
- AudioFormatConverter.cs
- ObservableCollectionDefaultValueFactory.cs
- RegexWriter.cs
- SoapBinding.cs
- _TransmitFileOverlappedAsyncResult.cs
- PageHandlerFactory.cs
- PageBuildProvider.cs
- GradientBrush.cs
- RoutingExtension.cs
- ItemType.cs
- ProcessThread.cs
- SecurityPolicySection.cs
- WindowInteractionStateTracker.cs
- Rotation3D.cs
- TextRangeEditLists.cs
- CodeStatement.cs
- CodeTypeMemberCollection.cs
- ToggleProviderWrapper.cs
- SpnEndpointIdentity.cs
- LocatorManager.cs