using System;
using System.Text;
using System.Runtime.InteropServices;
namespace AnticipatingMinds.PlatformServices.UnmanagedReflection{
/// <summary>
/// Summary description for ParamInfo.
/// </summary>
public class ParameterInfo
{
public ParameterInfo(AssemblyInfo assemblyInfo, uint paramToken,string parameterTypeName)
{
this.paramToken = paramToken;
this.assemblyInfo = assemblyInfo;
this.typeName = parameterTypeName;
uint uintTemp;
IntPtr ptrTemp;
int intTemp;
int nameLength = 0;
assemblyInfo.MetadataImport.GetParamProps(paramToken,out intTemp,out intTemp,null, 0, out nameLength,out attributes,out uintTemp,out ptrTemp,out intTemp);
StringBuilder nameBuilder = new StringBuilder(nameLength);
assemblyInfo.MetadataImport.GetParamProps(paramToken,out intTemp,out intTemp,nameBuilder, nameBuilder.Capacity+1, out nameLength,out attributes,out uintTemp,out ptrTemp,out intTemp);
name = nameBuilder.ToString();
isOptional = (attributes & (int) CorParamAttr.pdOptional) != 0;
}
public string Name
{
get
{
return name;
}
}
public string TypeName
{
get
{
return typeName;
}
}
public System.Reflection.ParameterAttributes CorAttributes
{
get
{
return (System.Reflection.ParameterAttributes) attributes;
}
}
public bool IsOptional
{
get
{
return isOptional;
}
}
private string name;
private string typeName;
private uint attributes = 0;
private bool isOptional;
private uint paramToken;
private AssemblyInfo assemblyInfo;
}
}
|