using System;
namespace AnticipatingMinds.Genesis.CodeDOM{
///<summary>Represents formal parameter of the method.</summary>
/// <remarks>
/// (ECMA 334. Page 230, Line 41)
/// </remarks>
[Serializable]
public class CodeMethodParameter : CodeElement
{
#region Nested Types
/// <summary>
/// Represents parameter declaration modifiers.
/// </summary>
public enum CodeMethodParameterModifier
{
/// <summary>
/// Parameter has no modifiers.
/// </summary>
None,
/// <summary>
/// Parameter is passed by reference.
/// </summary>
Ref,
/// <summary>
/// Out parameter.
/// </summary>
Out
};
#endregion Nested Types
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeMethodParameter"/> class.
/// </summary>
public CodeMethodParameter(): this(new CodeTypeReference("System.Void"),string.Empty)
{
this.type = type;
this.name= name;
}
/// <summary>
/// Initializes new instance of the <see cref="CodeMethodParameter"/> class.
/// </summary>
/// <param name="type">Parameter type.</param>
/// <param name="name">Parameter name.</param>
public CodeMethodParameter(CodeTypeReference type, string name)
{
this.type = type;
this.name= name;
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets or sets parameter declaration modifiers.
/// </summary>
public CodeMethodParameterModifier Modifier
{
get
{
return parameterModifiers;
}
set
{
parameterModifiers = value;
}
}
/// <summary>
/// Gets or sets parameter type.
/// </summary>
public CodeTypeReference Type
{
get
{
return type;
}
set
{
type = value;
}
}
/// <summary>
/// Gets or sets parameter name.
/// </summary>
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
/// <summary>
/// Gets or sets flag that specifies that parameter is parameter-array.
/// </summary>
/// <remarks>
/// Defines if parameter is parameter-array. (params in C#)
/// (ECMA 334. Page 231, Line 13)
/// </remarks>
public bool IsParameterArray
{
get
{
return isParameterArray;
}
set
{
isParameterArray = value;
}
}
/// <summary>
/// Gets collection of attributes associated with parameter declaration.
/// </summary>
/// <remarks>ECMA 334 - p. 231, line 9,14.</remarks>
public CodeAttributeCollection Attributes
{
get
{
return attributes;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeTypeReference type;
private string name;
private CodeMethodParameterModifier parameterModifiers = CodeMethodParameterModifier.None;
private bool isParameterArray = false;
private CodeAttributeCollection attributes = new CodeAttributeCollection();
#endregion Private instance fields
}
}
|