Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / ExtendedPropertyInfo.cs / 1305376 / ExtendedPropertyInfo.cs
namespace System.Workflow.ComponentModel.Serialization
{
using System;
using System.IO;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.Reflection;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Globalization;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Design;
using System.Runtime.Serialization;
using System.Security.Permissions;
using System.Collections.ObjectModel;
using System.Drawing;
#region X:Key Support
internal delegate object GetValueHandler(ExtendedPropertyInfo extendedProperty, object extendee);
internal delegate void SetValueHandler(ExtendedPropertyInfo extendedProperty, object extendee, object value);
internal delegate XmlQualifiedName GetQualifiedNameHandler(ExtendedPropertyInfo extendedProperty, WorkflowMarkupSerializationManager manager, out string prefix);
#region Class ExtendedPropertyInfo
internal sealed class ExtendedPropertyInfo : PropertyInfo
{
#region Members and Constructors
private PropertyInfo realPropertyInfo = null;
private GetValueHandler OnGetValue;
private SetValueHandler OnSetValue;
private GetQualifiedNameHandler OnGetXmlQualifiedName;
private WorkflowMarkupSerializationManager manager = null;
internal ExtendedPropertyInfo(PropertyInfo propertyInfo, GetValueHandler getValueHandler, SetValueHandler setValueHandler, GetQualifiedNameHandler qualifiedNameHandler)
{
this.realPropertyInfo = propertyInfo;
this.OnGetValue = getValueHandler;
this.OnSetValue = setValueHandler;
this.OnGetXmlQualifiedName = qualifiedNameHandler;
}
internal ExtendedPropertyInfo(PropertyInfo propertyInfo, GetValueHandler getValueHandler, SetValueHandler setValueHandler, GetQualifiedNameHandler qualifiedNameHandler, WorkflowMarkupSerializationManager manager)
: this(propertyInfo, getValueHandler, setValueHandler, qualifiedNameHandler)
{
this.manager = manager;
}
internal PropertyInfo RealPropertyInfo
{
get
{
return this.realPropertyInfo;
}
}
internal WorkflowMarkupSerializationManager SerializationManager
{
get
{
return this.manager;
}
}
#endregion
#region Property Info overrides
public override string Name
{
get
{
return this.realPropertyInfo.Name;
}
}
public override Type DeclaringType
{
get
{
return this.realPropertyInfo.DeclaringType;
}
}
public override Type ReflectedType
{
get
{
return this.realPropertyInfo.ReflectedType;
}
}
public override Type PropertyType
{
get
{
return this.realPropertyInfo.PropertyType;
}
}
public override MethodInfo[] GetAccessors(bool nonPublic)
{
return this.realPropertyInfo.GetAccessors(nonPublic);
}
public override MethodInfo GetGetMethod(bool nonPublic)
{
return this.realPropertyInfo.GetGetMethod(nonPublic);
}
public override MethodInfo GetSetMethod(bool nonPublic)
{
return this.realPropertyInfo.GetSetMethod(nonPublic);
}
public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture)
{
if (OnGetValue != null)
return OnGetValue(this, obj);
else
return null;
}
public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture)
{
if (OnSetValue != null)
OnSetValue(this, obj, value);
}
public XmlQualifiedName GetXmlQualifiedName(WorkflowMarkupSerializationManager manager, out string prefix)
{
prefix = String.Empty;
if (OnGetXmlQualifiedName != null)
return OnGetXmlQualifiedName(this, manager, out prefix);
else
return null;
}
public override ParameterInfo[] GetIndexParameters()
{
return this.realPropertyInfo.GetIndexParameters();
}
public override PropertyAttributes Attributes
{
get
{
return this.realPropertyInfo.Attributes;
}
}
public override bool CanRead
{
get
{
return this.realPropertyInfo.CanRead;
}
}
public override bool CanWrite
{
get
{
return this.realPropertyInfo.CanWrite;
}
}
#endregion
#region MemberInfo Overrides
public override object[] GetCustomAttributes(bool inherit)
{
return this.realPropertyInfo.GetCustomAttributes(inherit);
}
public override object[] GetCustomAttributes(Type attributeType, bool inherit)
{
return this.realPropertyInfo.GetCustomAttributes(attributeType, inherit);
}
public override bool IsDefined(Type attributeType, bool inherit)
{
return this.realPropertyInfo.IsDefined(attributeType, inherit);
}
#endregion
#region Helpers
internal static bool IsExtendedProperty(WorkflowMarkupSerializationManager manager, XmlQualifiedName xmlQualifiedName)
{
bool isExtendedProperty = false;
object extendee = manager.Context.Current;
if (extendee != null)
{
foreach (ExtendedPropertyInfo extendedProperty in manager.GetExtendedProperties(extendee))
{
string prefix = String.Empty;
XmlQualifiedName qualifiedPropertyName = extendedProperty.GetXmlQualifiedName(manager, out prefix);
if (qualifiedPropertyName.Name.Equals(xmlQualifiedName.Name, StringComparison.Ordinal)
&& qualifiedPropertyName.Namespace.Equals(xmlQualifiedName.Namespace, StringComparison.Ordinal))
{
isExtendedProperty = true;
break;
}
}
}
return isExtendedProperty;
}
internal static bool IsExtendedProperty(WorkflowMarkupSerializationManager manager, IList propInfos, XmlQualifiedName xmlQualifiedName)
{
foreach (PropertyInfo propInfo in propInfos)
{
ExtendedPropertyInfo extendedProperty = propInfo as ExtendedPropertyInfo;
if (extendedProperty == null)
continue;
string prefix = String.Empty;
XmlQualifiedName qualifiedPropertyName = extendedProperty.GetXmlQualifiedName(manager, out prefix);
if (qualifiedPropertyName.Name.Equals(xmlQualifiedName.Name, StringComparison.Ordinal)
&& qualifiedPropertyName.Namespace.Equals(xmlQualifiedName.Namespace, StringComparison.Ordinal))
{
return true;
}
}
return false;
}
#endregion
}
#endregion
#endregion
}
// 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
- FileChangesMonitor.cs
- ComboBoxItem.cs
- WorkItem.cs
- SerialErrors.cs
- SqlProviderManifest.cs
- WindowsSlider.cs
- TraceXPathNavigator.cs
- ExeContext.cs
- QueryAccessibilityHelpEvent.cs
- HtmlTableCell.cs
- PageThemeCodeDomTreeGenerator.cs
- GetReadStreamResult.cs
- InputLanguageManager.cs
- MemberInfoSerializationHolder.cs
- CompareValidator.cs
- SiteMapDataSourceView.cs
- RegisteredHiddenField.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- CodeGen.cs
- TextProperties.cs
- DataGridViewCellStyleBuilderDialog.cs
- ObjectNotFoundException.cs
- AbandonedMutexException.cs
- WebPartCatalogAddVerb.cs
- StringFormat.cs
- SHA256Managed.cs
- XmlSchemaObject.cs
- MD5Cng.cs
- WpfPayload.cs
- TransactionScopeDesigner.cs
- SpecialFolderEnumConverter.cs
- XmlElementList.cs
- ArgumentNullException.cs
- AppSettingsReader.cs
- SignatureHelper.cs
- ColorTranslator.cs
- NavigateEvent.cs
- TypeListConverter.cs
- ButtonAutomationPeer.cs
- CommonProperties.cs
- EpmCustomContentDeSerializer.cs
- EventLogHandle.cs
- RsaSecurityTokenAuthenticator.cs
- TableLayoutPanelBehavior.cs
- XpsSerializationManagerAsync.cs
- PickDesigner.xaml.cs
- CompModSwitches.cs
- NTAccount.cs
- WebRequestModulesSection.cs
- StyleHelper.cs
- DataGridViewCellConverter.cs
- ColorKeyFrameCollection.cs
- Merger.cs
- NavigationEventArgs.cs
- TreeNodeCollectionEditorDialog.cs
- OdbcParameterCollection.cs
- EndPoint.cs
- ToolboxItemLoader.cs
- FamilyTypefaceCollection.cs
- CalendarButton.cs
- ExeContext.cs
- InstanceValue.cs
- TableItemProviderWrapper.cs
- ILGen.cs
- TemplateControlCodeDomTreeGenerator.cs
- ValidationSummary.cs
- HtmlGenericControl.cs
- TypeDescriptor.cs
- CfgSemanticTag.cs
- Attribute.cs
- TextProperties.cs
- AddInController.cs
- SecurityRuntime.cs
- TextEndOfLine.cs
- ApplicationServicesHostFactory.cs
- RowToFieldTransformer.cs
- FileUtil.cs
- PathStreamGeometryContext.cs
- ListViewItemSelectionChangedEvent.cs
- ListBase.cs
- SimpleWebHandlerParser.cs
- WindowsFormsHelpers.cs
- TableLayout.cs
- TreeNodeBinding.cs
- HtmlForm.cs
- ImageField.cs
- ButtonPopupAdapter.cs
- ActionItem.cs
- DrawingServices.cs
- SubpageParaClient.cs
- UnionExpr.cs
- SafeHandles.cs
- storepermission.cs
- Style.cs
- MDIClient.cs
- IApplicationTrustManager.cs
- Window.cs
- RequestCacheManager.cs
- SetterBase.cs
- WebPartVerbsEventArgs.cs