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
- dbdatarecord.cs
- XmlBindingWorker.cs
- CompilerGlobalScopeAttribute.cs
- SqlClientFactory.cs
- MDIWindowDialog.cs
- X509AudioLogo.cs
- DeclarativeCatalogPart.cs
- Query.cs
- EllipticalNodeOperations.cs
- ToolboxControl.cs
- Collection.cs
- BitmapEffect.cs
- Utils.cs
- AutomationIdentifierGuids.cs
- AssociatedControlConverter.cs
- XmlSchemaImport.cs
- HttpCachePolicy.cs
- SHA1Managed.cs
- Wildcard.cs
- ValidatingReaderNodeData.cs
- MergeFilterQuery.cs
- SchemaNotation.cs
- OdbcFactory.cs
- ProxyWebPartConnectionCollection.cs
- SchemaImporter.cs
- ConfigurationManagerHelper.cs
- NestPullup.cs
- AutomationPatternInfo.cs
- TextTreeInsertUndoUnit.cs
- CompiledAction.cs
- OneToOneMappingSerializer.cs
- AbstractSvcMapFileLoader.cs
- FileSecurity.cs
- StreamUpdate.cs
- SoapTypeAttribute.cs
- Matrix3D.cs
- assertwrapper.cs
- ActionMessageFilter.cs
- Models.cs
- ContextQuery.cs
- HtmlFormWrapper.cs
- TextDecorationCollection.cs
- PasswordTextContainer.cs
- AttributeXamlType.cs
- HtmlInputRadioButton.cs
- SymLanguageType.cs
- Properties.cs
- DelegatingTypeDescriptionProvider.cs
- CfgArc.cs
- LocalizabilityAttribute.cs
- EditorBrowsableAttribute.cs
- FixedSOMLineCollection.cs
- NotSupportedException.cs
- RequiredFieldValidator.cs
- SystemTcpConnection.cs
- Splitter.cs
- MemoryPressure.cs
- ToolStripButton.cs
- CreateUserErrorEventArgs.cs
- DataColumnPropertyDescriptor.cs
- FontTypeConverter.cs
- FontSourceCollection.cs
- WebConvert.cs
- ModelTreeEnumerator.cs
- CanonicalFontFamilyReference.cs
- ProfileInfo.cs
- WizardStepBase.cs
- TextRunProperties.cs
- SourceSwitch.cs
- FunctionDefinition.cs
- BookmarkScopeHandle.cs
- SystemGatewayIPAddressInformation.cs
- CodeActivityMetadata.cs
- SpellCheck.cs
- NetworkInformationException.cs
- SkewTransform.cs
- CalendarAutomationPeer.cs
- HeaderedItemsControl.cs
- HttpListenerContext.cs
- ToolboxComponentsCreatingEventArgs.cs
- TextServicesHost.cs
- ConfigurationElement.cs
- ConfigurationSection.cs
- RemoteWebConfigurationHost.cs
- TwoPhaseCommitProxy.cs
- cookie.cs
- ContractType.cs
- MasterPage.cs
- QueryResponse.cs
- Queue.cs
- CreateUserWizard.cs
- Cursors.cs
- DataProtection.cs
- HtmlForm.cs
- XmlRawWriter.cs
- NumericUpDownAcceleration.cs
- EventLogInformation.cs
- DataGridViewUtilities.cs
- DataServiceQueryException.cs
- PageAsyncTask.cs