using System;
using System.Text;
using System.Runtime.InteropServices;
namespace AnticipatingMinds.PlatformServices.UnmanagedReflection{
/// <summary>
/// Summary description for EventInfo.
/// </summary>
public class EventInfo : MemberInfo
{
public EventInfo(AssemblyInfo assemblyInfo, uint eventToken):base(assemblyInfo, eventToken)
{
uint uintTemp;
int intTemp;
uint eventType = 0;
uint addMethodToken = 0;
uint removeMethodToken = 0;
int nameLength = 0;
assemblyInfo.MetadataImport.GetEventProps(eventToken,out uintTemp,null,0,out nameLength,out uintTemp,out eventType,out addMethodToken,out removeMethodToken,out uintTemp,null,0,out intTemp);
StringBuilder nameBuilder = new StringBuilder(nameLength);
assemblyInfo.MetadataImport.GetEventProps(eventToken,out uintTemp,nameBuilder,nameBuilder.Capacity+1,out nameLength,out uintTemp,out eventType,out addMethodToken,out removeMethodToken,out uintTemp,null,0,out intTemp);
name = nameBuilder.ToString();
if(addMethodToken != 0)
addMethod = new MethodInfo(assemblyInfo,addMethodToken);
if(removeMethodToken != 0)
removeMethod = new MethodInfo(assemblyInfo,removeMethodToken);
eventHandlerType = assemblyInfo.GetTypeFromToken(eventType).FullName;
}
public string EventHandlerType
{
get
{
return eventHandlerType;
}
}
public MethodInfo AddMethodInfo
{
get
{
return addMethod;
}
}
public MethodInfo RemoveMethodInfo
{
get
{
return removeMethod;
}
}
public string Name
{
get
{
return name;
}
}
string name;
string eventHandlerType;
private MethodInfo addMethod = null;
private MethodInfo removeMethod = null;
}
}
|