64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
|
//-----------------------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
namespace System.Activities
|
||
|
{
|
||
|
using System;
|
||
|
using System.Diagnostics.CodeAnalysis;
|
||
|
using System.Runtime;
|
||
|
|
||
|
public abstract class LocationReference
|
||
|
{
|
||
|
protected LocationReference()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public string Name
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.NameCore;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[SuppressMessage(FxCop.Category.Naming, FxCop.Rule.PropertyNamesShouldNotMatchGetMethods,
|
||
|
Justification = "Workflow normalizes on Type for Type properties")]
|
||
|
public Type Type
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.TypeCore;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// internal Id use for arguments/variables/delegate arguments, and accessed
|
||
|
// by our mapping pieces
|
||
|
internal int Id
|
||
|
{
|
||
|
get;
|
||
|
set;
|
||
|
}
|
||
|
|
||
|
protected abstract string NameCore { get; }
|
||
|
protected abstract Type TypeCore { get; }
|
||
|
|
||
|
// Soft-Link: This method is referenced through reflection by
|
||
|
// ExpressionUtilities.TryRewriteLambdaExpression. Update that
|
||
|
// file if the signature changes.
|
||
|
public abstract Location GetLocation(ActivityContext context);
|
||
|
|
||
|
// The contract of this method is the caller promises never to write to the location
|
||
|
internal virtual Location GetLocationForRead(ActivityContext context)
|
||
|
{
|
||
|
return GetLocation(context);
|
||
|
}
|
||
|
|
||
|
// The contract of this method is the caller promises never to read from the location
|
||
|
internal virtual Location GetLocationForWrite(ActivityContext context)
|
||
|
{
|
||
|
return GetLocation(context);
|
||
|
}
|
||
|
}
|
||
|
}
|