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
- SqlConnectionString.cs
- BoolExpressionVisitors.cs
- RsaSecurityTokenParameters.cs
- ImageListUtils.cs
- BinaryWriter.cs
- MDIControlStrip.cs
- QilGeneratorEnv.cs
- SynchronizationContext.cs
- MailMessage.cs
- TextFindEngine.cs
- LabelTarget.cs
- followingsibling.cs
- DocumentViewer.cs
- Quaternion.cs
- ConnectionProviderAttribute.cs
- ScriptServiceAttribute.cs
- _Rfc2616CacheValidators.cs
- TabPanel.cs
- SafeNativeMethods.cs
- EventSinkHelperWriter.cs
- SelectionListComponentEditor.cs
- FtpWebRequest.cs
- KeyValuePairs.cs
- DecryptedHeader.cs
- XPathLexer.cs
- AssemblyCache.cs
- Model3D.cs
- TextDecoration.cs
- TypeUtil.cs
- MembershipSection.cs
- ListSourceHelper.cs
- FloaterParagraph.cs
- HuffmanTree.cs
- SrgsRuleRef.cs
- BitmapEffectCollection.cs
- DataFieldEditor.cs
- TerminatorSinks.cs
- StylusButtonEventArgs.cs
- Matrix3DStack.cs
- LogicalTreeHelper.cs
- InertiaTranslationBehavior.cs
- MarkupExtensionParser.cs
- DataGridItemCollection.cs
- WindowsStatic.cs
- ThreadPoolTaskScheduler.cs
- CapacityStreamGeometryContext.cs
- Win32KeyboardDevice.cs
- DbgUtil.cs
- StringUtil.cs
- CombinedGeometry.cs
- Deserializer.cs
- Setter.cs
- CallbackWrapper.cs
- DocumentScope.cs
- ServiceContractListItem.cs
- AuthStoreRoleProvider.cs
- InfiniteIntConverter.cs
- UriTemplateLiteralQueryValue.cs
- Label.cs
- ThreadPool.cs
- XDeferredAxisSource.cs
- Graphics.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- BaseResourcesBuildProvider.cs
- AppendHelper.cs
- SystemGatewayIPAddressInformation.cs
- MsmqBindingElementBase.cs
- FormsAuthentication.cs
- XsdCachingReader.cs
- TableCell.cs
- MediaContext.cs
- RuntimeHelpers.cs
- ProfessionalColorTable.cs
- CorrelationRequestContext.cs
- SQLInt16.cs
- PreservationFileWriter.cs
- XmlSchemaSimpleTypeRestriction.cs
- DisplayNameAttribute.cs
- BypassElement.cs
- ApplicationTrust.cs
- DatatypeImplementation.cs
- SortDescriptionCollection.cs
- HtmlTextArea.cs
- IPAddressCollection.cs
- PropertyPath.cs
- SQLCharsStorage.cs
- DataGridLinkButton.cs
- DbgCompiler.cs
- BufferBuilder.cs
- OdbcError.cs
- OleDbStruct.cs
- ObfuscateAssemblyAttribute.cs
- InternalBufferOverflowException.cs
- MappingMetadataHelper.cs
- ConnectionPool.cs
- ResourceSetExpression.cs
- FacetValues.cs
- PtsHost.cs
- DynamicValidatorEventArgs.cs
- ContentElement.cs