Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Tracking / TrackingLocation.cs / 1305376 / TrackingLocation.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Reflection;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Security.Permissions;
using System.Globalization;
//using System.Workflow.Activities;
using System.Workflow.ComponentModel;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using Hosting = System.Workflow.Runtime.Hosting;
namespace System.Workflow.Runtime.Tracking
{
///
/// Contains data that is used to match instance locations.
///
[Serializable]
public sealed class WorkflowTrackingLocation
{
#region Private Data Members
private IList _events = new List();
#endregion
#region Constructors
public WorkflowTrackingLocation()
{
}
public WorkflowTrackingLocation(IList events)
{
_events = events;
}
#endregion
#region Public Properties
public IList Events
{
get { return _events; }
}
#endregion
#region Internal Matching Methods
internal bool Match(TrackingWorkflowEvent status)
{
return _events.Contains(status);
}
#endregion
}
///
/// Contains data that is used to match activity locations.
///
[Serializable]
public sealed class ActivityTrackingLocation
{
#region Private Data Members
private TrackingConditionCollection _conditions = new TrackingConditionCollection();
private List _events = new List();
private Type _activityType = null;
private string _activityName = null;
private bool _trackDerived = false;
#endregion
#region Constructors
public ActivityTrackingLocation()
{
}
public ActivityTrackingLocation(string activityTypeName)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
_activityName = activityTypeName;
}
public ActivityTrackingLocation(Type activityType)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
_activityType = activityType;
}
public ActivityTrackingLocation(string activityTypeName, IEnumerable executionStatusEvents)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityName = activityTypeName;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(Type activityType, IEnumerable executionStatusEvents)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityType = activityType;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(string activityTypeName, bool matchDerivedTypes, IEnumerable executionStatusEvents)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityName = activityTypeName;
_trackDerived = matchDerivedTypes;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(Type activityType, bool matchDerivedTypes, IEnumerable executionStatusEvents)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityType = activityType;
_trackDerived = matchDerivedTypes;
_events.AddRange(executionStatusEvents);
}
#endregion
#region Public Properties
public Type ActivityType
{
get { return _activityType; }
set { _activityType = value; }
}
public string ActivityTypeName
{
get { return _activityName; }
set { _activityName = value; }
}
public bool MatchDerivedTypes
{
get { return _trackDerived; }
set { _trackDerived = value; }
}
public IList ExecutionStatusEvents
{
get { return _events; }
}
public TrackingConditionCollection Conditions
{
get { return _conditions; }
}
#endregion
#region Internal Matching Methods
internal bool Match(Activity activity, bool typeMatchOnly)
{
if (null == activity)
throw new ArgumentNullException("activity");
//
// Matching the type is generally going to be cheaper
// so do it first and short circuit if we don't match
if (!TypeIsMatch(activity))
{
return false;
}
else
{
if (typeMatchOnly)
{
return true;
}
else
{
return ConditionsAreMatch(activity);
}
}
}
#endregion
#region Private Matching Methods
private bool TypeIsMatch(Activity activity)
{
if (null != _activityType)
return TypeMatch.IsMatch(activity, _activityType, _trackDerived);
else
return TypeMatch.IsMatch(activity, _activityName, _trackDerived);
}
private bool ConditionsAreMatch(object obj)
{
//
// If any condition doesn't match the location doesn't match
foreach (TrackingCondition c in _conditions)
if (!c.Match(obj))
return false;
//
// All conditions match
return true;
}
#endregion
}
///
/// Contains data that is used to match code locations.
///
[Serializable]
public sealed class UserTrackingLocation
{
#region Private Data Members
private string _keyName = null;
private Type _argType = null;
private string _argName = null;
private bool _trackDerivedArgs = false;
private Type _activityType = null;
private string _activityName = null;
private bool _trackDerivedActivities = false;
private TrackingConditionCollection _conditions = new TrackingConditionCollection();
#endregion
#region Constructors
public UserTrackingLocation()
{
}
public UserTrackingLocation(Type argumentType)
{
_argType = argumentType;
}
public UserTrackingLocation(Type argumentType, Type activityType)
{
_argType = argumentType;
_activityType = activityType;
}
public UserTrackingLocation(Type argumentType, string activityTypeName)
{
_argType = argumentType;
_activityName = activityTypeName;
}
public UserTrackingLocation(string argumentTypeName)
{
_argName = argumentTypeName;
}
public UserTrackingLocation(string argumentTypeName, string activityTypeName)
{
_argName = argumentTypeName;
_activityName = activityTypeName;
}
public UserTrackingLocation(string argumentTypeName, Type activityType)
{
_argName = argumentTypeName;
_activityType = activityType;
}
#endregion
#region Public Properties
public string KeyName
{
get { return _keyName; }
set { _keyName = value; }
}
public Type ArgumentType
{
get { return _argType; }
set { _argType = value; }
}
public string ArgumentTypeName
{
get { return _argName; }
set { _argName = value; }
}
public bool MatchDerivedArgumentTypes
{
get { return _trackDerivedArgs; }
set { _trackDerivedArgs = value; }
}
public Type ActivityType
{
get { return _activityType; }
set { _activityType = value; }
}
public string ActivityTypeName
{
get { return _activityName; }
set { _activityName = value; }
}
public bool MatchDerivedActivityTypes
{
get { return _trackDerivedActivities; }
set { _trackDerivedActivities = value; }
}
public TrackingConditionCollection Conditions
{
get { return _conditions; }
}
#endregion
#region Internal Matching Methods
internal bool Match(Activity activity)
{
if (!ActTypeIsMatch(activity))
return false;
else
return ConditionsAreMatch(activity);
}
internal bool Match(Activity activity, string keyName, object arg)
{
return RuntimeMatch(activity, keyName, arg);
}
#endregion
#region Private Matching Methods
private bool ActTypeIsMatch(Activity activity)
{
if (null != _activityType)
return TypeMatch.IsMatch(activity, _activityType, _trackDerivedActivities);
else
return TypeMatch.IsMatch(activity, _activityName, _trackDerivedActivities);
}
private bool RuntimeMatch(Activity activity, string keyName, object obj)
{
//
// Check the excludes - if any exclude matches based on activity only we're not a match
if (!ActTypeIsMatch(activity))
return false;
//
// Check the name of the key, null means match all
if (null != _keyName)
{
if (0 != String.Compare(_keyName, keyName, StringComparison.Ordinal))
{
return false;
}
}
if (null != _argType)
return TypeMatch.IsMatch(obj, _argType, _trackDerivedArgs);
else
return TypeMatch.IsMatch(obj, _argName, _trackDerivedArgs);
}
private bool ConditionsAreMatch(object obj)
{
//
// If any condition doesn't match the location doesn't match
foreach (TrackingCondition c in _conditions)
if (!c.Match(obj))
return false;
//
// All conditions match
return true;
}
#endregion
}
internal sealed class TypeMatch
{
private TypeMatch() { }
internal static bool IsMatch(object obj, string name, bool matchDerived)
{
Type objType = obj.GetType();
if (0 == string.Compare(objType.Name, name, StringComparison.Ordinal))
{
return true;
}
else
{
//
// If we're not checking base types we're done
if (!matchDerived)
return false;
//
// Check interfaces (case sensitive)
// This checks all interfaces (including interfaces on base types )
if (null != objType.GetInterface(name))
return true;
//
// Walk down the base types and look for a match
Type b = objType.BaseType;
while (b != null)
{
if (0 == string.Compare(b.Name, name, StringComparison.Ordinal))
return true;
b = b.BaseType;
}
return false;
}
}
internal static bool IsMatch(object obj, Type matchType, bool matchDerived)
{
Type objType = obj.GetType();
//
// First check if the type is a direct match.
// Can't just use Type.IsInstanceOfType at this point because that matches bases and interfaces.
// If not then use IsInstanceOfType to check bases and interfaces if we are matching derived
if (objType == matchType)
return true;
else
{
if (matchDerived)
return matchType.IsInstanceOfType(obj);
else
return false;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Reflection;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Security.Permissions;
using System.Globalization;
//using System.Workflow.Activities;
using System.Workflow.ComponentModel;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
using Hosting = System.Workflow.Runtime.Hosting;
namespace System.Workflow.Runtime.Tracking
{
///
/// Contains data that is used to match instance locations.
///
[Serializable]
public sealed class WorkflowTrackingLocation
{
#region Private Data Members
private IList _events = new List();
#endregion
#region Constructors
public WorkflowTrackingLocation()
{
}
public WorkflowTrackingLocation(IList events)
{
_events = events;
}
#endregion
#region Public Properties
public IList Events
{
get { return _events; }
}
#endregion
#region Internal Matching Methods
internal bool Match(TrackingWorkflowEvent status)
{
return _events.Contains(status);
}
#endregion
}
///
/// Contains data that is used to match activity locations.
///
[Serializable]
public sealed class ActivityTrackingLocation
{
#region Private Data Members
private TrackingConditionCollection _conditions = new TrackingConditionCollection();
private List _events = new List();
private Type _activityType = null;
private string _activityName = null;
private bool _trackDerived = false;
#endregion
#region Constructors
public ActivityTrackingLocation()
{
}
public ActivityTrackingLocation(string activityTypeName)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
_activityName = activityTypeName;
}
public ActivityTrackingLocation(Type activityType)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
_activityType = activityType;
}
public ActivityTrackingLocation(string activityTypeName, IEnumerable executionStatusEvents)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityName = activityTypeName;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(Type activityType, IEnumerable executionStatusEvents)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityType = activityType;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(string activityTypeName, bool matchDerivedTypes, IEnumerable executionStatusEvents)
{
if (null == activityTypeName)
throw new ArgumentNullException("activityTypeName");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityName = activityTypeName;
_trackDerived = matchDerivedTypes;
_events.AddRange(executionStatusEvents);
}
public ActivityTrackingLocation(Type activityType, bool matchDerivedTypes, IEnumerable executionStatusEvents)
{
if (null == activityType)
throw new ArgumentNullException("activityType");
if (null == executionStatusEvents)
throw new ArgumentNullException("executionStatusEvents");
_activityType = activityType;
_trackDerived = matchDerivedTypes;
_events.AddRange(executionStatusEvents);
}
#endregion
#region Public Properties
public Type ActivityType
{
get { return _activityType; }
set { _activityType = value; }
}
public string ActivityTypeName
{
get { return _activityName; }
set { _activityName = value; }
}
public bool MatchDerivedTypes
{
get { return _trackDerived; }
set { _trackDerived = value; }
}
public IList ExecutionStatusEvents
{
get { return _events; }
}
public TrackingConditionCollection Conditions
{
get { return _conditions; }
}
#endregion
#region Internal Matching Methods
internal bool Match(Activity activity, bool typeMatchOnly)
{
if (null == activity)
throw new ArgumentNullException("activity");
//
// Matching the type is generally going to be cheaper
// so do it first and short circuit if we don't match
if (!TypeIsMatch(activity))
{
return false;
}
else
{
if (typeMatchOnly)
{
return true;
}
else
{
return ConditionsAreMatch(activity);
}
}
}
#endregion
#region Private Matching Methods
private bool TypeIsMatch(Activity activity)
{
if (null != _activityType)
return TypeMatch.IsMatch(activity, _activityType, _trackDerived);
else
return TypeMatch.IsMatch(activity, _activityName, _trackDerived);
}
private bool ConditionsAreMatch(object obj)
{
//
// If any condition doesn't match the location doesn't match
foreach (TrackingCondition c in _conditions)
if (!c.Match(obj))
return false;
//
// All conditions match
return true;
}
#endregion
}
///
/// Contains data that is used to match code locations.
///
[Serializable]
public sealed class UserTrackingLocation
{
#region Private Data Members
private string _keyName = null;
private Type _argType = null;
private string _argName = null;
private bool _trackDerivedArgs = false;
private Type _activityType = null;
private string _activityName = null;
private bool _trackDerivedActivities = false;
private TrackingConditionCollection _conditions = new TrackingConditionCollection();
#endregion
#region Constructors
public UserTrackingLocation()
{
}
public UserTrackingLocation(Type argumentType)
{
_argType = argumentType;
}
public UserTrackingLocation(Type argumentType, Type activityType)
{
_argType = argumentType;
_activityType = activityType;
}
public UserTrackingLocation(Type argumentType, string activityTypeName)
{
_argType = argumentType;
_activityName = activityTypeName;
}
public UserTrackingLocation(string argumentTypeName)
{
_argName = argumentTypeName;
}
public UserTrackingLocation(string argumentTypeName, string activityTypeName)
{
_argName = argumentTypeName;
_activityName = activityTypeName;
}
public UserTrackingLocation(string argumentTypeName, Type activityType)
{
_argName = argumentTypeName;
_activityType = activityType;
}
#endregion
#region Public Properties
public string KeyName
{
get { return _keyName; }
set { _keyName = value; }
}
public Type ArgumentType
{
get { return _argType; }
set { _argType = value; }
}
public string ArgumentTypeName
{
get { return _argName; }
set { _argName = value; }
}
public bool MatchDerivedArgumentTypes
{
get { return _trackDerivedArgs; }
set { _trackDerivedArgs = value; }
}
public Type ActivityType
{
get { return _activityType; }
set { _activityType = value; }
}
public string ActivityTypeName
{
get { return _activityName; }
set { _activityName = value; }
}
public bool MatchDerivedActivityTypes
{
get { return _trackDerivedActivities; }
set { _trackDerivedActivities = value; }
}
public TrackingConditionCollection Conditions
{
get { return _conditions; }
}
#endregion
#region Internal Matching Methods
internal bool Match(Activity activity)
{
if (!ActTypeIsMatch(activity))
return false;
else
return ConditionsAreMatch(activity);
}
internal bool Match(Activity activity, string keyName, object arg)
{
return RuntimeMatch(activity, keyName, arg);
}
#endregion
#region Private Matching Methods
private bool ActTypeIsMatch(Activity activity)
{
if (null != _activityType)
return TypeMatch.IsMatch(activity, _activityType, _trackDerivedActivities);
else
return TypeMatch.IsMatch(activity, _activityName, _trackDerivedActivities);
}
private bool RuntimeMatch(Activity activity, string keyName, object obj)
{
//
// Check the excludes - if any exclude matches based on activity only we're not a match
if (!ActTypeIsMatch(activity))
return false;
//
// Check the name of the key, null means match all
if (null != _keyName)
{
if (0 != String.Compare(_keyName, keyName, StringComparison.Ordinal))
{
return false;
}
}
if (null != _argType)
return TypeMatch.IsMatch(obj, _argType, _trackDerivedArgs);
else
return TypeMatch.IsMatch(obj, _argName, _trackDerivedArgs);
}
private bool ConditionsAreMatch(object obj)
{
//
// If any condition doesn't match the location doesn't match
foreach (TrackingCondition c in _conditions)
if (!c.Match(obj))
return false;
//
// All conditions match
return true;
}
#endregion
}
internal sealed class TypeMatch
{
private TypeMatch() { }
internal static bool IsMatch(object obj, string name, bool matchDerived)
{
Type objType = obj.GetType();
if (0 == string.Compare(objType.Name, name, StringComparison.Ordinal))
{
return true;
}
else
{
//
// If we're not checking base types we're done
if (!matchDerived)
return false;
//
// Check interfaces (case sensitive)
// This checks all interfaces (including interfaces on base types )
if (null != objType.GetInterface(name))
return true;
//
// Walk down the base types and look for a match
Type b = objType.BaseType;
while (b != null)
{
if (0 == string.Compare(b.Name, name, StringComparison.Ordinal))
return true;
b = b.BaseType;
}
return false;
}
}
internal static bool IsMatch(object obj, Type matchType, bool matchDerived)
{
Type objType = obj.GetType();
//
// First check if the type is a direct match.
// Can't just use Type.IsInstanceOfType at this point because that matches bases and interfaces.
// If not then use IsInstanceOfType to check bases and interfaces if we are matching derived
if (objType == matchType)
return true;
else
{
if (matchDerived)
return matchType.IsInstanceOfType(obj);
else
return false;
}
}
}
}
// 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
- UnsafeNativeMethods.cs
- Shape.cs
- LOSFormatter.cs
- EUCJPEncoding.cs
- PropertyDescriptorGridEntry.cs
- ClockGroup.cs
- WebPartEditorCancelVerb.cs
- UnaryExpression.cs
- ProfileGroupSettingsCollection.cs
- SpecialNameAttribute.cs
- HebrewNumber.cs
- NumericUpDown.cs
- FontSourceCollection.cs
- Control.cs
- RouteParametersHelper.cs
- FloaterBaseParagraph.cs
- ProjectionAnalyzer.cs
- ScrollProperties.cs
- ISO2022Encoding.cs
- TextEncodedRawTextWriter.cs
- ProviderConnectionPoint.cs
- ViewGenResults.cs
- Missing.cs
- StorageEndPropertyMapping.cs
- SpellerError.cs
- CodeEventReferenceExpression.cs
- X509SecurityTokenAuthenticator.cs
- DrawingAttributesDefaultValueFactory.cs
- ObjectViewEntityCollectionData.cs
- SafeViewOfFileHandle.cs
- DataContractFormatAttribute.cs
- CachedPathData.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- DateTimeSerializationSection.cs
- RoleManagerModule.cs
- OleDbFactory.cs
- NativeActivity.cs
- SqlServer2KCompatibilityAnnotation.cs
- DeviceContext.cs
- XamlSerializerUtil.cs
- InternalDuplexChannelListener.cs
- Types.cs
- QilChoice.cs
- TextTreeDeleteContentUndoUnit.cs
- GridErrorDlg.cs
- OptimalTextSource.cs
- IApplicationTrustManager.cs
- CommandID.cs
- WebServiceResponseDesigner.cs
- BooleanFacetDescriptionElement.cs
- FormsAuthenticationUserCollection.cs
- ReturnValue.cs
- XPathDocumentBuilder.cs
- VarInfo.cs
- CodeEntryPointMethod.cs
- ObjectStateEntryDbDataRecord.cs
- XpsSerializationException.cs
- SafeProcessHandle.cs
- ExternalDataExchangeClient.cs
- LongPath.cs
- DataObjectPastingEventArgs.cs
- TreeView.cs
- ControllableStoryboardAction.cs
- PeerEndPoint.cs
- Popup.cs
- MarginCollapsingState.cs
- SamlEvidence.cs
- BuildProviderInstallComponent.cs
- WebPartMinimizeVerb.cs
- safesecurityhelperavalon.cs
- TitleStyle.cs
- ColorConvertedBitmap.cs
- ReadOnlyCollectionBuilder.cs
- ListDictionaryInternal.cs
- InvalidDocumentContentsException.cs
- CanonicalFontFamilyReference.cs
- OledbConnectionStringbuilder.cs
- InvokeHandlers.cs
- ObjectSet.cs
- ResourcesGenerator.cs
- RangeValuePattern.cs
- ToolStripDropDownClosingEventArgs.cs
- XmlNavigatorStack.cs
- ExportFileRequest.cs
- InplaceBitmapMetadataWriter.cs
- NotFiniteNumberException.cs
- FlowDocumentPaginator.cs
- CodeIndexerExpression.cs
- MenuItem.cs
- InternalControlCollection.cs
- SqlDependency.cs
- MatrixValueSerializer.cs
- MouseActionConverter.cs
- QuaternionAnimation.cs
- PermissionListSet.cs
- NamespaceTable.cs
- ResourceReader.cs
- TransactionChannelListener.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- ApplicationServiceManager.cs