using System;
namespace AnticipatingMinds.Genesis.CodeDOM{
/// <summary>
/// Represents an expression that invokes an indexer.
/// </summary>
[Serializable]
public class CodeIndexerInvokeExpression : CodeReferenceExpression
{
#region Public instance properties
/// <summary>
/// Gets or sets the expression that points to an indexer to invoke.
/// </summary>
/// <remarks>
/// This is generaly either a reference expression (this[], base[])
/// or a named referenece Expression (item[])
/// or a parenthesized expression (((MyType)myProperty)[MyTypeIndexerArgument]; )
/// </remarks>
public CodeExpression IndexerReferenceExpression
{
get
{
return method;
}
set
{
method = value;
}
}
/// <summary>
/// Gets the arguments to invoke the indexer with.
/// </summary>
public CodeArgumentCollection Arguments
{
get
{
return arguments;
}
}
public override object Clone()
{
CodeIndexerInvokeExpression clonedIndexerInvokeExpression = base.Clone () as CodeIndexerInvokeExpression;
if(clonedIndexerInvokeExpression.IndexerReferenceExpression != null)
clonedIndexerInvokeExpression.IndexerReferenceExpression = IndexerReferenceExpression.Clone() as CodeExpression;
return clonedIndexerInvokeExpression;
}
#endregion Public instance properties
#region Private instance fields
private CodeExpression method;
private CodeArgumentCollection arguments = new CodeArgumentCollection();
#endregion Private instance fields
}
}
|