Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / Markup / Primitives / MarkupProperty.cs / 1305600 / MarkupProperty.cs
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2005
//
// File: MarkupProperty.cs
//
// Contents: API for iterating a tree of objects for serialization
//
// Created: 04/28/2005 [....]
//
//-----------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Collections;
using System.Reflection;
using System.Text;
using System.Windows;
using MS.Internal.WindowsBase;
namespace System.Windows.Markup.Primitives
{
///
/// A property description used by serialiation to encapsulate access to properties and their values. A property is
/// either representable as a string or a list of items. If the property can be respresented as a string
/// IsComposite is false, otherwise, if IsComposite is true, the property is a list of items.
///
public abstract class MarkupProperty
{
///
/// Prevent external specialization
///
[FriendAccessAllowed] // Used by MarkupPropertyWrapper
internal MarkupProperty() { }
///
/// A name sutible for diagnostics and error reporting. A serializer should not use this value. It should use
/// the PropertyDescriptor and/or DependencyProperty instead.
///
public abstract string Name { get; }
///
/// The type of the property.
///
public abstract Type PropertyType { get; }
///
/// whether the property type is a collection or not
///
internal bool IsCollectionProperty
{
get
{
Type propertyType = PropertyType;
return (typeof(IList).IsAssignableFrom(propertyType) ||
typeof(IDictionary).IsAssignableFrom(propertyType) ||
propertyType.IsArray);
}
}
///
/// The property descriptor for the markup property if this property is associated with a CLR property.
///
public virtual PropertyDescriptor PropertyDescriptor { get { return null; } }
///
/// The dependency property for the markup property if this property is backed by a DependencyProperty.
///
public virtual DependencyProperty DependencyProperty { get { return null; } }
///
/// Returns true when this propety is an attached dependency property. When true, PropertyDescriptor
/// can be null (but is not required to be) and DependencyProperty is not null.
///
public virtual bool IsAttached { get { return false; } }
///
/// Returns true when this property represents a constructor argument. When true, PropertyDescriptor and
/// DependencyProperty are both null. XAML only uses this for represnting the constructor parameters of
/// MarkupExtension instances.
///
public virtual bool IsConstructorArgument { get { return false; } }
///
/// Returns true when this property represents the text to pass to the type's ValueConverter to create an
/// instance instead of using a constructor. When true, PropertyDescriptor and DependencyProperty are both
/// null. If a property is provided through MarkupItem.Properties that has this value set to true it is the
/// only property the type will provide.
///
public virtual bool IsValueAsString { get { return false; } }
///
/// Returns true when this property represents direct content of a collection (or dictionary) class. When true,
/// PropertyDescriptor and DependencyProperty are both null.
///
public virtual bool IsContent { get { return false; } }
///
/// Returns true when the property represents the key used by the MarkupItem's container to store the item in a
/// dictionary. When true, the PropertyDescriptor and DependencyProperty will return null. XAML will emit this
/// as an x:Key attribute.
///
public virtual bool IsKey { get { return false; } }
///
/// If IsComposite is false Value and StringValue are valid to call, the property can be represented as a
/// string. If is true, Items is valid to use and the property is one or more items. If the property is
/// composite but has not items, the property isn't returned by MarkupItem.GetProperties.
///
public virtual bool IsComposite { get { return false; } }
///
/// The current value of the property.
///
public abstract object Value { get; }
///
/// The string value of the property using ValueSerializer classes when appropriate to convert the value to a
/// string. Which ValueSerializer to invoke is determined by the IValueSerializerContext of the MarkupItem that
/// returned this MarkupProperty.
///
public abstract string StringValue { get; }
///
/// The list of types that this property will reference when it serializes its value as a string. This allows
/// a serializer to ensure that the de-serializer has enough information to convert references to these type
/// from the string representations. For example, ensuring there is an xmlns declaration for the XML namespace
/// that defines the type.
///
public abstract IEnumerable TypeReferences { get; }
///
/// Enumerate the items that make up the value of this property. If the property is not an enumeration, this
/// will only be one item in the enumeration. If the property is an enumeration (or enumerable) then all the
/// items will be returned. At least one will always be returned since it MarkupItem will not create a
/// MarkupProperty for properties with no items.
///
public abstract IEnumerable Items { get; }
///
/// The attributes associated with the markup property.
///
public abstract AttributeCollection Attributes { get; }
///
/// Checks to see that each markup object is of a public type. Used in serialization.
///
internal virtual void VerifyOnlySerializableTypes() { }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeGenerationManager.cs
- WCFServiceClientProxyGenerator.cs
- CompilerGeneratedAttribute.cs
- JoinTreeNode.cs
- RedirectionProxy.cs
- Substitution.cs
- SiteMembershipCondition.cs
- ToolBar.cs
- ToolBar.cs
- StateBag.cs
- TableLayoutSettings.cs
- OdbcHandle.cs
- ForAllOperator.cs
- CellPartitioner.cs
- LambdaValue.cs
- LoopExpression.cs
- PowerStatus.cs
- Pool.cs
- FormatConvertedBitmap.cs
- ConfigXmlElement.cs
- ResourceProperty.cs
- InvalidAsynchronousStateException.cs
- ClientTarget.cs
- AbstractExpressions.cs
- PrinterResolution.cs
- LinkClickEvent.cs
- path.cs
- Attributes.cs
- SerializationSectionGroup.cs
- EmbeddedMailObjectCollectionEditor.cs
- datacache.cs
- HwndSubclass.cs
- DynamicPropertyHolder.cs
- PersonalizationState.cs
- HitTestDrawingContextWalker.cs
- UrlMapping.cs
- DefaultBindingPropertyAttribute.cs
- Range.cs
- XmlILModule.cs
- Transform3D.cs
- IsolatedStoragePermission.cs
- ExclusiveTcpTransportManager.cs
- RoutedEventHandlerInfo.cs
- ToolBarOverflowPanel.cs
- NativeWindow.cs
- String.cs
- FieldInfo.cs
- DetailsViewUpdateEventArgs.cs
- SamlAuthorityBinding.cs
- XmlNamespaceMappingCollection.cs
- AnnotationResourceCollection.cs
- ContextStaticAttribute.cs
- CreateUserErrorEventArgs.cs
- NumberFunctions.cs
- DataPointer.cs
- HeaderUtility.cs
- HostingEnvironment.cs
- UpDownBase.cs
- HttpListenerTimeoutManager.cs
- LowerCaseStringConverter.cs
- CreateUserWizardDesigner.cs
- RemoteWebConfigurationHost.cs
- RemotingServices.cs
- OverrideMode.cs
- MetadataPropertyAttribute.cs
- MulticastDelegate.cs
- IOException.cs
- BinaryCommonClasses.cs
- BrowsableAttribute.cs
- SharedUtils.cs
- ToolZone.cs
- Bezier.cs
- DataViewManager.cs
- CultureSpecificCharacterBufferRange.cs
- ThemeInfoAttribute.cs
- SemanticResolver.cs
- InlineUIContainer.cs
- UInt16Storage.cs
- EventLogPermissionAttribute.cs
- basenumberconverter.cs
- WhitespaceSignificantCollectionAttribute.cs
- XmlSchemaSimpleTypeList.cs
- HebrewCalendar.cs
- AssemblyBuilderData.cs
- SafePEFileHandle.cs
- X500Name.cs
- AssociationSetMetadata.cs
- SQLStringStorage.cs
- SerializationException.cs
- Int32Animation.cs
- DataGridViewMethods.cs
- NumberSubstitution.cs
- WinFormsUtils.cs
- Solver.cs
- SecurityDocument.cs
- PkcsMisc.cs
- CreateUserWizardStep.cs
- SafeLibraryHandle.cs
- DEREncoding.cs
- TypeToStringValueConverter.cs