//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Expressions { using System.Linq.Expressions; using System.Runtime; public sealed class VariableReference : EnvironmentLocationReference { public VariableReference() : base() { } public VariableReference(Variable variable) : base() { this.Variable = variable; } public Variable Variable { get; set; } public override LocationReference LocationReference { get { return this.Variable; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { if (this.Variable == null) { metadata.AddValidationError(SR.VariableMustBeSet); } else { if (!(this.Variable is Variable)) { metadata.AddValidationError(SR.VariableTypeInvalid(this.Variable, typeof(T), this.Variable.Type)); } if (!this.Variable.IsInTree) { metadata.AddValidationError(SR.VariableShouldBeOpen(this.Variable.Name)); } if (!metadata.Environment.IsVisible(this.Variable)) { metadata.AddValidationError(SR.VariableNotVisible(this.Variable.Name)); } if (VariableModifiersHelper.IsReadOnly(Variable.Modifiers)) { metadata.AddValidationError(SR.VariableIsReadOnly(this.Variable.Name)); } } } public override string ToString() { if (Variable != null && !string.IsNullOrEmpty(Variable.Name)) { return Variable.Name; } return base.ToString(); } } }