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
- EntitySetRetriever.cs
- EmbeddedObject.cs
- CodeTypeDeclarationCollection.cs
- shaper.cs
- ScrollEventArgs.cs
- ProfileSection.cs
- SerializationException.cs
- BaseCodePageEncoding.cs
- ConstNode.cs
- MediaPlayerState.cs
- TableStyle.cs
- HttpRuntime.cs
- XmlSerializerVersionAttribute.cs
- Vector3DCollection.cs
- CodeTypeParameterCollection.cs
- GetWinFXPath.cs
- X509Utils.cs
- QueryCursorEventArgs.cs
- CallbackHandler.cs
- CounterSampleCalculator.cs
- ScriptingJsonSerializationSection.cs
- XmlHierarchicalDataSourceView.cs
- ToolboxControl.cs
- DeferredReference.cs
- RegistrySecurity.cs
- ServiceOperationListItem.cs
- FileDialog.cs
- HotSpot.cs
- HtmlGenericControl.cs
- CodeTypeDeclarationCollection.cs
- DataGridState.cs
- SoapServerProtocol.cs
- SafeNativeMethodsOther.cs
- ConstantSlot.cs
- InputScopeManager.cs
- UnauthorizedWebPart.cs
- DataBindingCollection.cs
- ValidationRule.cs
- EventLogger.cs
- ImageCodecInfoPrivate.cs
- StrongNameIdentityPermission.cs
- MdiWindowListItemConverter.cs
- BitmapEffectGroup.cs
- StylusDevice.cs
- WindowProviderWrapper.cs
- SafeHandle.cs
- TypedTableGenerator.cs
- TemplatedAdorner.cs
- RecognizerStateChangedEventArgs.cs
- ControlPager.cs
- WorkflowControlEndpoint.cs
- TextProperties.cs
- TransformerConfigurationWizardBase.cs
- ProxyWebPartConnectionCollection.cs
- SqlDeflator.cs
- MetadataPropertyvalue.cs
- StorageAssociationSetMapping.cs
- MimeWriter.cs
- DataBindingExpressionBuilder.cs
- SmtpClient.cs
- basemetadatamappingvisitor.cs
- BatchServiceHost.cs
- RoutedEventHandlerInfo.cs
- ResourceContainer.cs
- ActivityMarkupSerializer.cs
- GrammarBuilderDictation.cs
- XmlSchemaParticle.cs
- CorrelationManager.cs
- FileRecordSequence.cs
- FixedTextSelectionProcessor.cs
- TransformDescriptor.cs
- CodeIterationStatement.cs
- ImageAnimator.cs
- recordstatefactory.cs
- ellipse.cs
- DBDataPermissionAttribute.cs
- FacetEnabledSchemaElement.cs
- CellTreeNode.cs
- DiagnosticsElement.cs
- DtrList.cs
- FtpWebResponse.cs
- HandleExceptionArgs.cs
- SerialReceived.cs
- ApplyHostConfigurationBehavior.cs
- ListBox.cs
- SmiRecordBuffer.cs
- WebHeaderCollection.cs
- BitConverter.cs
- BindableTemplateBuilder.cs
- Literal.cs
- StrokeSerializer.cs
- IntegerValidator.cs
- ShadowGlyph.cs
- coordinatorscratchpad.cs
- WindowsTokenRoleProvider.cs
- NegotiateStream.cs
- ZipIOBlockManager.cs
- HtmlElementEventArgs.cs
- EventLogPermissionAttribute.cs
- DefaultParameterValueAttribute.cs