Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartTransformerAttribute.cs / 1305376 / 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;
[AttributeUsage(AttributeTargets.Class)]
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
- AuthenticodeSignatureInformation.cs
- MulticastIPAddressInformationCollection.cs
- odbcmetadatacolumnnames.cs
- SafeNativeMethodsMilCoreApi.cs
- XmlDictionary.cs
- HttpCookieCollection.cs
- BaseWebProxyFinder.cs
- EventSourceCreationData.cs
- UrlMappingsModule.cs
- NotSupportedException.cs
- XmlNodeChangedEventManager.cs
- ColorContextHelper.cs
- DoubleLinkListEnumerator.cs
- Pens.cs
- SchemaImporterExtension.cs
- InArgumentConverter.cs
- Base64Decoder.cs
- QualifiedCellIdBoolean.cs
- OdbcParameterCollection.cs
- ILGenerator.cs
- BadImageFormatException.cs
- Util.cs
- TemplateControlBuildProvider.cs
- URLIdentityPermission.cs
- KeyedCollection.cs
- CurrentChangingEventArgs.cs
- SharedTcpTransportManager.cs
- EndpointAddressProcessor.cs
- WebPartDeleteVerb.cs
- SpecularMaterial.cs
- XsltLoader.cs
- SmtpMail.cs
- XXXOnTypeBuilderInstantiation.cs
- ErrorsHelper.cs
- RegexMatch.cs
- VsPropertyGrid.cs
- CommandDesigner.cs
- StyleBamlTreeBuilder.cs
- ConfigXmlCDataSection.cs
- BufferedGraphics.cs
- ColorTransform.cs
- DesignerObjectListAdapter.cs
- MemoryPressure.cs
- DataProtection.cs
- QueryAccessibilityHelpEvent.cs
- Rect.cs
- StaticExtension.cs
- Rotation3D.cs
- XmlCharCheckingWriter.cs
- PropertyChangedEventArgs.cs
- SafeRightsManagementPubHandle.cs
- SecurityResources.cs
- TextDecorationUnitValidation.cs
- FieldDescriptor.cs
- PersonalizationProvider.cs
- ServiceReference.cs
- HttpApplication.cs
- followingsibling.cs
- CookieParameter.cs
- assertwrapper.cs
- DateRangeEvent.cs
- SimpleType.cs
- BaseCollection.cs
- ColorTranslator.cs
- XmlSchemaObjectCollection.cs
- WeakReferenceKey.cs
- ComboBoxDesigner.cs
- _OverlappedAsyncResult.cs
- XmlSchemaType.cs
- TdsParserStateObject.cs
- ListCollectionView.cs
- ConfigurationManagerInternalFactory.cs
- ClientViaElement.cs
- AppearanceEditorPart.cs
- SqlCommand.cs
- ScriptReferenceEventArgs.cs
- NativeCppClassAttribute.cs
- TreeWalker.cs
- MenuDesigner.cs
- DynamicControlParameter.cs
- ContextMenu.cs
- MouseGestureValueSerializer.cs
- InputMethodStateTypeInfo.cs
- _RegBlobWebProxyDataBuilder.cs
- FontUnit.cs
- CodeCommentStatement.cs
- EditorPartChrome.cs
- BitmapFrameDecode.cs
- DataRelation.cs
- DefaultAssemblyResolver.cs
- ReferentialConstraint.cs
- SizeLimitedCache.cs
- NumericExpr.cs
- TreeView.cs
- SupportsEventValidationAttribute.cs
- DbConnectionPoolGroup.cs
- PermissionSetEnumerator.cs
- BuildProviderCollection.cs
- EntityCommand.cs
- Simplifier.cs