160 lines
4.7 KiB
C#
160 lines
4.7 KiB
C#
|
//-----------------------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
namespace System.Activities.Tracking
|
||
|
{
|
||
|
using System;
|
||
|
using System.Runtime.Serialization;
|
||
|
using System.Runtime;
|
||
|
using System.Globalization;
|
||
|
|
||
|
[Fx.Tag.XamlVisible(false)]
|
||
|
[DataContract]
|
||
|
public sealed class ActivityInfo
|
||
|
{
|
||
|
string name;
|
||
|
string id;
|
||
|
string instanceId;
|
||
|
long instanceIdInternal;
|
||
|
string typeName;
|
||
|
|
||
|
public ActivityInfo(string name, string id, string instanceId, string typeName)
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(name))
|
||
|
{
|
||
|
throw FxTrace.Exception.ArgumentNullOrEmpty("name");
|
||
|
}
|
||
|
if (string.IsNullOrEmpty(id))
|
||
|
{
|
||
|
throw FxTrace.Exception.ArgumentNullOrEmpty("id");
|
||
|
}
|
||
|
if (string.IsNullOrEmpty(instanceId))
|
||
|
{
|
||
|
throw FxTrace.Exception.ArgumentNullOrEmpty("instanceId");
|
||
|
}
|
||
|
if (string.IsNullOrEmpty(typeName))
|
||
|
{
|
||
|
throw FxTrace.Exception.ArgumentNullOrEmpty("typeName");
|
||
|
}
|
||
|
this.Name = name;
|
||
|
this.Id = id;
|
||
|
this.InstanceId = instanceId;
|
||
|
this.TypeName = typeName;
|
||
|
}
|
||
|
|
||
|
internal ActivityInfo(ActivityInstance instance)
|
||
|
: this(instance.Activity, instance.InternalId)
|
||
|
{
|
||
|
this.Instance = instance;
|
||
|
}
|
||
|
|
||
|
internal ActivityInfo(Activity activity, long instanceId)
|
||
|
{
|
||
|
this.Activity = activity;
|
||
|
this.instanceIdInternal = instanceId;
|
||
|
}
|
||
|
|
||
|
internal ActivityInstance Instance
|
||
|
{
|
||
|
get;
|
||
|
private set;
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public string Name
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(this.name))
|
||
|
{
|
||
|
Fx.Assert(this.Activity != null, "Activity not set");
|
||
|
this.name = this.Activity.DisplayName;
|
||
|
}
|
||
|
return this.name;
|
||
|
}
|
||
|
// Internal visibility for partial trust serialization purposes only.
|
||
|
internal set
|
||
|
{
|
||
|
Fx.Assert(!string.IsNullOrEmpty(value), "Name cannot be null or empty");
|
||
|
this.name = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public string Id
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (String.IsNullOrEmpty(this.id))
|
||
|
{
|
||
|
Fx.Assert(this.Activity != null, "Activity not set");
|
||
|
this.id = this.Activity.Id;
|
||
|
}
|
||
|
return this.id;
|
||
|
}
|
||
|
// Internal visibility for partial trust serialization purposes only.
|
||
|
internal set
|
||
|
{
|
||
|
Fx.Assert(!string.IsNullOrEmpty(value), "Id cannot be null or empty");
|
||
|
this.id = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public string InstanceId
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(this.instanceId))
|
||
|
{
|
||
|
this.instanceId = this.instanceIdInternal.ToString(CultureInfo.InvariantCulture);
|
||
|
}
|
||
|
return this.instanceId;
|
||
|
}
|
||
|
// Internal visibility for partial trust serialization purposes only.
|
||
|
internal set
|
||
|
{
|
||
|
Fx.Assert(!string.IsNullOrEmpty(value), "InstanceId cannot be null or empty");
|
||
|
this.instanceId = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[DataMember]
|
||
|
public string TypeName
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(this.typeName))
|
||
|
{
|
||
|
Fx.Assert(this.Activity != null, "Activity not set");
|
||
|
this.typeName = this.Activity.GetType().FullName;
|
||
|
}
|
||
|
return this.typeName;
|
||
|
}
|
||
|
// Internal visibility for partial trust serialization purposes only.
|
||
|
internal set
|
||
|
{
|
||
|
Fx.Assert(!string.IsNullOrEmpty(value), "TypeName cannot be null or empty");
|
||
|
this.typeName = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override string ToString()
|
||
|
{
|
||
|
return string.Format(CultureInfo.CurrentCulture,
|
||
|
"Name={0}, ActivityId = {1}, ActivityInstanceId = {2}, TypeName={3}",
|
||
|
this.Name,
|
||
|
this.Id,
|
||
|
this.InstanceId,
|
||
|
this.TypeName);
|
||
|
}
|
||
|
|
||
|
internal Activity Activity
|
||
|
{
|
||
|
get;
|
||
|
private set;
|
||
|
}
|
||
|
}
|
||
|
}
|