Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartTransformerAttribute.cs / 2 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OutputCacheProviderCollection.cs
- XamlFigureLengthSerializer.cs
- ConfigurationErrorsException.cs
- TreeNodeBinding.cs
- SelectedGridItemChangedEvent.cs
- SchemaContext.cs
- SqlDataSourceStatusEventArgs.cs
- RuntimeConfig.cs
- SchemaNotation.cs
- ChannelDispatcher.cs
- Codec.cs
- UpdateDelegates.Generated.cs
- CodeTypeReference.cs
- IPHostEntry.cs
- MetadataArtifactLoaderCompositeFile.cs
- Matrix3DStack.cs
- StringBuilder.cs
- XsltConvert.cs
- ClientSideQueueItem.cs
- DbConnectionPoolGroupProviderInfo.cs
- ExtendedProtectionPolicyTypeConverter.cs
- ApplicationContext.cs
- ActivityCodeDomSerializer.cs
- ToolStripGrip.cs
- SQLSingle.cs
- DataFormats.cs
- GroupBox.cs
- IIS7UserPrincipal.cs
- EditorZone.cs
- TreeIterator.cs
- _DynamicWinsockMethods.cs
- TrackBarRenderer.cs
- CorrelationRequestContext.cs
- ConfigurationSettings.cs
- RsaElement.cs
- EntityConnection.cs
- StylusPointProperties.cs
- Pair.cs
- SecurityCookieModeValidator.cs
- CultureMapper.cs
- SpotLight.cs
- ProfileParameter.cs
- HtmlWindow.cs
- StylusPointPropertyId.cs
- JavaScriptSerializer.cs
- UpdatePanelControlTrigger.cs
- Variant.cs
- XmlSignatureManifest.cs
- HtmlTextBoxAdapter.cs
- EndpointAddressElementBase.cs
- XmlElementAttribute.cs
- SqlParameterizer.cs
- TreeViewAutomationPeer.cs
- RenderDataDrawingContext.cs
- CapabilitiesState.cs
- ImageDrawing.cs
- _BasicClient.cs
- infer.cs
- Int32KeyFrameCollection.cs
- SafeBitVector32.cs
- CfgArc.cs
- AsyncDataRequest.cs
- ThreadInterruptedException.cs
- StringExpressionSet.cs
- WindowsFormsSectionHandler.cs
- MatrixCamera.cs
- PropertyEntry.cs
- Compilation.cs
- ReferenceConverter.cs
- SelectionItemProviderWrapper.cs
- NumberFunctions.cs
- PeerResolverBindingElement.cs
- RegexNode.cs
- Subtree.cs
- Connector.cs
- SqlDataAdapter.cs
- LexicalChunk.cs
- HttpFileCollection.cs
- XmlDigitalSignatureProcessor.cs
- ResourceReferenceExpressionConverter.cs
- CachedCompositeFamily.cs
- CollectionMarkupSerializer.cs
- LogReserveAndAppendState.cs
- XmlIncludeAttribute.cs
- Storyboard.cs
- FileReservationCollection.cs
- InspectionWorker.cs
- ActivationProxy.cs
- FilterException.cs
- ReadOnlyCollectionBase.cs
- AnnotationObservableCollection.cs
- GridLength.cs
- RuntimeConfigLKG.cs
- CustomAttributeBuilder.cs
- TextMetrics.cs
- HealthMonitoringSectionHelper.cs
- PropertyToken.cs
- ListenerElementsCollection.cs
- TransformValueSerializer.cs
- CompositionTarget.cs