/// <summary> /// Add a class to this module /// </summary> /// <param name="attrSet">attributes of this class</param> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <param name="superType">super type of this class (extends)</param> /// <returns>a descriptor for this new class</returns> public ClassDef AddClass(TypeAttr attrSet, string nsName, string name, Class superType) { ClassDef aClass = new ClassDef(attrSet,nsName,name,metaData); if (superType != null) aClass.SetSuper(superType); if (PEFile.IsMSCorlib) metaData.mscorlib.SetSpecialSystemClass (nsName, name, aClass); metaData.AddToTable(MDTable.TypeDef,aClass); return aClass; }
/// <summary> /// Add a class to this module /// </summary> /// <param name="attrSet">attributes of this class</param> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <param name="superType">super type of this class (extends)</param> /// <returns>a descriptor for this new class</returns> public ClassDef AddClass(TypeAttr attrSet, string nsName, string name, Class superType) { ClassDef aClass = new ClassDef(attrSet,nsName,name,metaData); aClass.SetSuper(superType); metaData.AddToTable(MDTable.TypeDef,aClass); return aClass; }
/// <summary> /// Add a class which extends System.ValueType to this module /// </summary> /// <param name="attrSet">attributes of this class</param> /// <param name="nsName">name space name</param> /// <param name="name">class name</param> /// <returns>a descriptor for this new class</returns> public ClassDef AddValueClass(TypeAttr attrSet, string nsName, string name, ValueClass vClass) { ClassDef aClass = new ClassDef(attrSet,nsName,name,metaData); if (!ClassDef.IsValueType (nsName, name) && !ClassDef.IsEnum (nsName, name)) { aClass.MakeValueClass(vClass); } else { if (ClassDef.IsEnum (nsName, name)) aClass.SetSuper (metaData.mscorlib.ValueType ()); else aClass.SetSuper (metaData.mscorlib.GetSpecialSystemClass (PrimitiveType.Object)); metaData.mscorlib.SetSpecialSystemClass (nsName, name, aClass); } aClass.SetTypeIndex (PrimitiveType.ValueType.GetTypeIndex ()); metaData.AddToTable(MDTable.TypeDef,aClass); return aClass; }