Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / EditorOptionAttribute.cs / 1305376 / EditorOptionAttribute.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.PropertyEditing
{
using System.Runtime;
using System.Collections;
[Fx.Tag.XamlVisible(false)]
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = true)]
sealed class EditorOptionsAttribute : Attribute
{
public string Name { get; set; }
public object Value { get; set; }
//TypeId is needed so that multiple EditorOptionsAttribute could be added to the same type/property
public override object TypeId
{
get
{
return new EditorOptionsAttributeTypeId
{
BaseTypeId = base.TypeId,
Name = this.Name,
Value = this.Value
};
}
}
public static T GetOptionValue(IEnumerable attributes, string optionName, T defaultValue)
{
object optionValue;
if (TryGetOptionValue(attributes, optionName, out optionValue))
{
return (T)optionValue;
}
return defaultValue;
}
public static bool TryGetOptionValue(IEnumerable attributes, string optionName, out object optionValue)
{
foreach (Attribute attribute in attributes)
{
EditorOptionsAttribute optionAttribute = attribute as EditorOptionsAttribute;
if (optionAttribute != null && optionAttribute.Name.Equals(optionName))
{
optionValue = optionAttribute.Value;
return true;
}
}
optionValue = null;
return false;
}
//A class to uniquely identify a name-value pair
class EditorOptionsAttributeTypeId
{
public object BaseTypeId { get; set; }
public string Name { get; set; }
public object Value { get; set; }
public override bool Equals(object obj)
{
EditorOptionsAttributeTypeId that = obj as EditorOptionsAttributeTypeId;
if (that == null) return false;
return this.BaseTypeId == that.BaseTypeId &&
string.Equals(this.Name, that.Name) &&
object.Equals(this.Value, that.Value);
}
public override int GetHashCode()
{
return
(BaseTypeId == null ? 0 : BaseTypeId.GetHashCode()) ^
(Name == null ? 0 : Name.GetHashCode()) ^
(Value == null ? 0 : Value.GetHashCode());
}
}
}
}
// 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
- XamlTypeMapper.cs
- MessagingDescriptionAttribute.cs
- OdbcFactory.cs
- XmlSchemaAttributeGroupRef.cs
- ReaderOutput.cs
- MenuItem.cs
- HostingEnvironment.cs
- ServiceDescriptionSerializer.cs
- XPathNavigatorReader.cs
- XmlSchemaComplexContentExtension.cs
- AuthenticationService.cs
- Reference.cs
- AssemblyCollection.cs
- DrawToolTipEventArgs.cs
- IntegerValidatorAttribute.cs
- StdValidatorsAndConverters.cs
- ChildTable.cs
- LabelAutomationPeer.cs
- Rectangle.cs
- ToolStripCustomTypeDescriptor.cs
- ExpressionWriter.cs
- DataGridViewCheckBoxColumn.cs
- StylusPlugInCollection.cs
- RequestQueryProcessor.cs
- ContractInferenceHelper.cs
- ZipIOModeEnforcingStream.cs
- BitmapImage.cs
- GlyphTypeface.cs
- DetailsViewDeletedEventArgs.cs
- StyleBamlTreeBuilder.cs
- PanelStyle.cs
- FrameworkElementAutomationPeer.cs
- XmlNamespaceMapping.cs
- SessionEndingCancelEventArgs.cs
- ObjectStateManager.cs
- SortedSetDebugView.cs
- _AcceptOverlappedAsyncResult.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ProviderMetadata.cs
- _SafeNetHandles.cs
- BufferAllocator.cs
- Message.cs
- ISAPIApplicationHost.cs
- SpecialTypeDataContract.cs
- Errors.cs
- DrawingBrush.cs
- XsdDateTime.cs
- ThrowHelper.cs
- CollectionConverter.cs
- TreeBuilderXamlTranslator.cs
- PropertyTab.cs
- ProviderUtil.cs
- PrimitiveType.cs
- DictionaryManager.cs
- Point3D.cs
- PropertyChangingEventArgs.cs
- PaperSource.cs
- ButtonChrome.cs
- Image.cs
- TextEditorDragDrop.cs
- KeyValueInternalCollection.cs
- VarRefManager.cs
- Source.cs
- DateBoldEvent.cs
- VerbConverter.cs
- UnauthorizedWebPart.cs
- LocalBuilder.cs
- Misc.cs
- FactoryGenerator.cs
- FontUnitConverter.cs
- RNGCryptoServiceProvider.cs
- SafeEventLogWriteHandle.cs
- XhtmlMobileTextWriter.cs
- SerializationAttributes.cs
- EdmPropertyAttribute.cs
- Certificate.cs
- CodeDefaultValueExpression.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- MethodBuilder.cs
- ModelItemKeyValuePair.cs
- XmlSerializationGeneratedCode.cs
- BitmapSource.cs
- XmlSchemaParticle.cs
- Point3DAnimationUsingKeyFrames.cs
- DefaultValueTypeConverter.cs
- RepeatInfo.cs
- BamlRecords.cs
- DataTemplateSelector.cs
- RegisteredDisposeScript.cs
- CacheDependency.cs
- ButtonBaseAutomationPeer.cs
- URL.cs
- SkewTransform.cs
- EditorBrowsableAttribute.cs
- ImageDrawing.cs
- Membership.cs
- TreeNode.cs
- Comparer.cs
- ContextMenu.cs
- CornerRadius.cs