|
//-----------------------------------------------------------------------------
// 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);
}
}
}
|