We need you! We're working hard on the next version of Developer Fusion -
Let us know what you think we should be up to!
-
Expand
Microsoft.Win32
-
Expand
Microsoft.Win32.SafeHandles
-
Expand
System
-
Expand
System.Runtime.Hosting
-
Expand
System.Runtime.InteropServices
-
Expand
System.Runtime.CompilerServices
-
Expand
System.Collections
-
Expand
System.Collections.Generic
-
Expand
System.Collections.ObjectModel
-
Expand
System.Configuration.Assemblies
-
Expand
System.Diagnostics
-
Expand
System.Diagnostics.CodeAnalysis
-
Expand
System.Diagnostics.SymbolStore
-
Expand
System.Globalization
-
Expand
System.IO
-
Expand
System.IO.IsolatedStorage
-
Expand
System.Reflection
-
Expand
System.Reflection.Cache
-
Expand
System.Reflection.Emit
-
Expand
__ExceptionInfo
-
Expand
__ExceptionInstance
-
Expand
__FixupData
-
Expand
AssemblyBuilder
-
Expand
AssemblyBuilderAccess
-
Expand
AssemblyBuilderData
-
Expand
ConstructorBuilder
-
Expand
ConstructorOnTypeBuilderInstantiation
-
Expand
CustAttr
-
Expand
CustomAttributeBuilder
-
CreateCustomAttribute(ModuleBuilder, int)
-
CreateCustomAttribute(ModuleBuilder, int, int, bool)
-
CustomAttributeBuilder(ConstructorInfo, object)
-
CustomAttributeBuilder(ConstructorInfo, object, FieldInfo, object)
-
CustomAttributeBuilder(ConstructorInfo, object, PropertyInfo, object)
-
CustomAttributeBuilder(ConstructorInfo, object, PropertyInfo, object, FieldInfo, object)
-
EmitString(BinaryWriter, string)
-
EmitType(BinaryWriter, Type)
-
EmitValue(BinaryWriter, Type, object)
-
GetIDsOfNames(Guid, IntPtr, uint, uint, IntPtr)
-
GetTypeInfo(uint, uint, IntPtr)
-
GetTypeInfoCount(uint)
-
InitCustomAttributeBuilder(ConstructorInfo, object, PropertyInfo, object, FieldInfo, object)
-
Invoke(uint, Guid, uint, short, IntPtr, IntPtr, IntPtr, IntPtr)
-
PrepareCreateCustomAttributeToDisk(ModuleBuilder)
-
ValidateType(Type)
-
Expand
DestroyScout
-
Expand
DynamicILGenerator
-
Expand
DynamicILInfo
-
Expand
DynamicMethod
-
Expand
DynamicResolver
-
Expand
DynamicScope
-
Expand
EmptyCAHolder
-
Expand
Entry
-
Expand
EnumBuilder
-
Expand
EventBuilder
-
Expand
EventToken
-
Expand
FieldBuilder
-
Expand
FieldOnTypeBuilderInstantiation
-
Expand
FieldToken
-
Expand
FlowControl
-
Expand
Format
-
Expand
GenericMethodInfo
-
Expand
GenericTypeParameterBuilder
-
Expand
ILGenerator
-
Expand
Label
-
Expand
LineNumberInfo
-
Expand
LocalBuilder
-
Expand
LocalSymInfo
-
Expand
MethodBuilder
-
Expand
MethodBuilderInstantiation
-
Expand
MethodOnTypeBuilderInstantiation
-
Expand
MethodRental
-
Expand
MethodToken
-
Expand
ModuleBuilder
-
Expand
ModuleBuilderData
-
Expand
OpCode
-
Expand
OpCodes
-
Expand
OpCodeType
-
Expand
OperandType
-
Expand
PackingSize
-
Expand
ParameterBuilder
-
Expand
ParameterToken
-
Expand
PEFileKinds
-
Expand
PropertyBuilder
-
Expand
PropertyToken
-
Expand
REDocument
-
Expand
ResWriterData
-
Expand
RTDynamicMethod
-
Expand
ScopeAction
-
Expand
ScopeTree
-
Expand
SecurityControlFlags
-
Expand
SignatureHelper
-
Expand
SignatureToken
-
Expand
StackBehaviour
-
Expand
StringToken
-
Expand
SymbolMethod
-
Expand
SymbolType
-
Expand
SymCustomAttr
-
Expand
TypeBuilder
-
Expand
TypeBuilderInstantiation
-
Expand
TypeKind
-
Expand
TypeNameBuilder
-
Expand
TypeToken
-
Expand
UnmanagedMarshal
-
Expand
VarArgMethod
-
Expand
System.Resources
-
Expand
System.Runtime
-
Expand
System.Runtime.InteropServices.Expando
-
Expand
System.Runtime.ConstrainedExecution
-
Expand
System.Runtime.Remoting.Activation
-
Expand
System.Runtime.Remoting.Messaging
-
Expand
System.Runtime.Remoting.Channels
-
Expand
System.Runtime.Remoting.Lifetime
-
Expand
System.Runtime.Remoting
-
Expand
System.Runtime.Remoting.Contexts
-
Expand
System.Runtime.Remoting.Proxies
-
Expand
System.Runtime.Remoting.Metadata
-
Expand
System.Runtime.Remoting.Metadata.W3cXsd2001
-
Expand
System.Runtime.Remoting.Services
-
Expand
System.Runtime.Serialization
-
Expand
System.Runtime.Serialization.Formatters
-
Expand
System.Runtime.Serialization.Formatters.Binary
-
Expand
System.Runtime.Versioning
-
Expand
System.Security
-
Expand
System.Security.Cryptography
-
Expand
System.Security.Cryptography.X509Certificates
-
Expand
System.Security.Permissions
-
Expand
System.Security.Policy
-
Expand
System.Security.Principal
-
Expand
System.Security.Util
-
Expand
System.Text
-
Expand
System.Threading
-
Expand
System.Runtime.Remoting.Channels.Http
-
Expand
System.Runtime.Remoting.Channels.Tcp
-
Expand
System.Runtime.Remoting.MetadataServices
-
Expand
System.Runtime.Serialization.Formatters.Soap.Xml
-
Expand
System.Runtime.Serialization.Formatters.Soap
-
Expand
Microsoft.Tools.Caspol
-
Expand
Microsoft.Tools.Build
-
Expand
Microsoft.CSharp
-
Expand
System.CodeDom
-
Expand
System.CodeDom.Compiler
-
Expand
System.Collections.Specialized
-
Expand
System.ComponentModel
-
Expand
System.ComponentModel.Design
-
Expand
System.ComponentModel.Design.Serialization
-
Expand
System.Configuration
-
Expand
System.Web
-
Expand
System.Configuration.Provider
-
Expand
System.Configuration.Internal
-
Expand
System.Internal
-
Expand
System.Windows.Forms
-
Expand
System.Net
-
Expand
System.Net.Sockets
-
Expand
System.Net.NetworkInformation
-
Expand
System.Net.ComImports
-
Expand
System.Net.Security
-
Expand
System.Net.Cache
-
Expand
System.Net.Configuration
-
Expand
System.Text.RegularExpressions
-
Expand
System.Tools
-
Expand
System.IO.Compression
-
Expand
System.IO.Ports
-
Expand
System.Security.AccessControl
-
Expand
System.Xml
-
Expand
System.Xml.XPath.DataBinding
-
Expand
System.Xml.Schema
-
Expand
System.Xml.Serialization
-
Expand
System.Xml.Serialization.Advanced
-
Expand
System.Xml.Serialization.Configuration
-
Expand
System.Xml.XPath
-
Expand
System.Xml.Xsl
-
Expand
System.Xml.Xsl.IlGen
-
Expand
System.Xml.Xsl.Qil
-
Expand
System.Xml.Xsl.Runtime
-
Expand
System.Xml.Xsl.XPath
-
Expand
System.Xml.Xsl.Xslt
-
Expand
System.Xml.Xsl.XsltOld
-
Expand
System.Xml.Xsl.XsltOld.Debugger
-
Expand
Microsoft.JScript
-
Expand
Microsoft.Vsa
-
Expand
Microsoft.JScript.Vsa
- namespace System.Reflection.Emit
- {
-
-
- using System;
- using System.Reflection;
- using System.Reflection.Emit;
- using System.IO;
- using System.Text;
- using System.Security.Permissions;
- using System.Runtime.InteropServices;
- using System.Globalization;
-
- [HostProtection(MayLeakOnAbort = true)]
- [ClassInterface(ClassInterfaceType.None)]
- [ComDefaultInterface(typeof(_CustomAttributeBuilder))]
- [System.Runtime.InteropServices.ComVisible(true)]
- public class CustomAttributeBuilder : _CustomAttributeBuilder
- {
-
-
- public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs)
- {
- InitCustomAttributeBuilder(con, constructorArgs, new PropertyInfo[] {}, new object[] {}, new FieldInfo[] {}, new object[] {});
- }
-
-
-
- public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues)
- {
- InitCustomAttributeBuilder(con, constructorArgs, namedProperties, propertyValues, new FieldInfo[] {}, new object[] {});
- }
-
-
-
- public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, FieldInfo[] namedFields, object[] fieldValues)
- {
- InitCustomAttributeBuilder(con, constructorArgs, new PropertyInfo[] {}, new object[] {}, namedFields, fieldValues);
- }
-
-
-
- public CustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues)
- {
- InitCustomAttributeBuilder(con, constructorArgs, namedProperties, propertyValues, namedFields, fieldValues);
- }
-
- private const byte SERIALIZATION_TYPE_BOOLEAN = SignatureHelper.ELEMENT_TYPE_BOOLEAN;
- private const byte SERIALIZATION_TYPE_CHAR = SignatureHelper.ELEMENT_TYPE_CHAR;
- private const byte SERIALIZATION_TYPE_I1 = SignatureHelper.ELEMENT_TYPE_I1;
- private const byte SERIALIZATION_TYPE_U1 = SignatureHelper.ELEMENT_TYPE_U1;
- private const byte SERIALIZATION_TYPE_I2 = SignatureHelper.ELEMENT_TYPE_I2;
- private const byte SERIALIZATION_TYPE_U2 = SignatureHelper.ELEMENT_TYPE_U2;
- private const byte SERIALIZATION_TYPE_I4 = SignatureHelper.ELEMENT_TYPE_I4;
- private const byte SERIALIZATION_TYPE_U4 = SignatureHelper.ELEMENT_TYPE_U4;
- private const byte SERIALIZATION_TYPE_I8 = SignatureHelper.ELEMENT_TYPE_I8;
- private const byte SERIALIZATION_TYPE_U8 = SignatureHelper.ELEMENT_TYPE_U8;
- private const byte SERIALIZATION_TYPE_R4 = SignatureHelper.ELEMENT_TYPE_R4;
- private const byte SERIALIZATION_TYPE_R8 = SignatureHelper.ELEMENT_TYPE_R8;
- private const byte SERIALIZATION_TYPE_STRING = SignatureHelper.ELEMENT_TYPE_STRING;
- private const byte SERIALIZATION_TYPE_SZARRAY = SignatureHelper.ELEMENT_TYPE_SZARRAY;
- private const byte SERIALIZATION_TYPE_TYPE = 80;
- private const byte SERIALIZATION_TYPE_TAGGED_OBJECT = 81;
- private const byte SERIALIZATION_TYPE_FIELD = 83;
- private const byte SERIALIZATION_TYPE_PROPERTY = 84;
- private const byte SERIALIZATION_TYPE_ENUM = 85;
-
-
- private bool ValidateType(Type t)
- {
- if (t.IsPrimitive || t == typeof(string) || t == typeof(Type))
- return true;
- if (t.IsEnum) {
- switch (Type.GetTypeCode(Enum.GetUnderlyingType(t))) {
- case TypeCode.SByte:
- case TypeCode.Byte:
- case TypeCode.Int16:
- case TypeCode.UInt16:
- case TypeCode.Int32:
- case TypeCode.UInt32:
- case TypeCode.Int64:
- case TypeCode.UInt64:
- return true;
- default:
- return false;
- }
- }
- if (t.IsArray) {
- if (t.GetArrayRank() != 1)
- return false;
- return ValidateType(t.GetElementType());
- }
- return t == typeof(object);
- }
-
- internal void InitCustomAttributeBuilder(ConstructorInfo con, object[] constructorArgs, PropertyInfo[] namedProperties, object[] propertyValues, FieldInfo[] namedFields, object[] fieldValues)
- {
- if (con == null)
- throw new ArgumentNullException("con");
- if (constructorArgs == null)
- throw new ArgumentNullException("constructorArgs");
- if (namedProperties == null)
- throw new ArgumentNullException("constructorArgs");
- if (propertyValues == null)
- throw new ArgumentNullException("propertyValues");
- if (namedFields == null)
- throw new ArgumentNullException("namedFields");
- if (fieldValues == null)
- throw new ArgumentNullException("fieldValues");
- if (namedProperties.Length != propertyValues.Length)
- throw new ArgumentException(Environment.GetResourceString("Arg_ArrayLengthsDiffer"), "namedProperties, propertyValues");
- if (namedFields.Length != fieldValues.Length)
- throw new ArgumentException(Environment.GetResourceString("Arg_ArrayLengthsDiffer"), "namedFields, fieldValues");
-
- if ((con.Attributes & MethodAttributes.Static) == MethodAttributes.Static || (con.Attributes & MethodAttributes.MemberAccessMask) == MethodAttributes.Private)
- throw new ArgumentException(Environment.GetResourceString("Argument_BadConstructor"));
-
- if ((con.CallingConvention & CallingConventions.Standard) != CallingConventions.Standard)
- throw new ArgumentException(Environment.GetResourceString("Argument_BadConstructorCallConv"));
-
-
- m_con = con;
- m_constructorArgs = new object[constructorArgs.Length];
- Array.Copy(constructorArgs, m_constructorArgs, constructorArgs.Length);
-
- Type[] paramTypes;
- int i;
-
-
- if (con is ConstructorBuilder) {
- paramTypes = ((ConstructorBuilder)con).GetParameterTypes();
- }
- else {
- ParameterInfo[] paramInfos = con.GetParametersNoCopy();
- paramTypes = new Type[paramInfos.Length];
- for (i = 0; i < paramInfos.Length; i++)
- paramTypes[i] = paramInfos[i].ParameterType;
- }
-
-
- if (paramTypes.Length != constructorArgs.Length)
- throw new ArgumentException(Environment.GetResourceString("Argument_BadParameterCountsForConstructor"));
-
-
- for (i = 0; i < paramTypes.Length; i++)
- if (!ValidateType(paramTypes[i]))
- throw new ArgumentException(Environment.GetResourceString("Argument_BadTypeInCustomAttribute"));
-
-
- for (i = 0; i < paramTypes.Length; i++) {
- if (constructorArgs[i] == null)
- continue;
- TypeCode paramTC = Type.GetTypeCode(paramTypes[i]);
- if (paramTC != Type.GetTypeCode(constructorArgs[i].GetType()))
- if (paramTC != TypeCode.Object || !ValidateType(constructorArgs[i].GetType()))
- throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_BadParameterTypeForConstructor"), i));
- }
-
-
- MemoryStream stream = new MemoryStream();
- BinaryWriter writer = new BinaryWriter(stream);
-
-
- writer.Write((ushort)1);
-
-
- for (i = 0; i < constructorArgs.Length; i++)
- EmitValue(writer, paramTypes[i], constructorArgs[i]);
-
-
- writer.Write((ushort)(namedProperties.Length + namedFields.Length));
-
-
- for (i = 0; i < namedProperties.Length; i++) {
-
- if (namedProperties[i] == null)
- throw new ArgumentNullException("namedProperties[" + i + "]");
-
-
- Type propType = namedProperties[i].PropertyType;
- if (propertyValues[i] == null && propType.IsPrimitive)
- throw new ArgumentNullException("propertyValues[" + i + "]");
-
-
- if (!ValidateType(propType))
- throw new ArgumentException(Environment.GetResourceString("Argument_BadTypeInCustomAttribute"));
-
-
- if (!namedProperties[i].CanWrite)
- throw new ArgumentException(Environment.GetResourceString("Argument_NotAWritableProperty"));
-
-
- if (namedProperties[i].DeclaringType != con.DeclaringType && (!(con.DeclaringType is TypeBuilderInstantiation)) && !con.DeclaringType.IsSubclassOf(namedProperties[i].DeclaringType)) {
-
-
-
- if (!TypeBuilder.IsTypeEqual(namedProperties[i].DeclaringType, con.DeclaringType)) {
-
-
-
-
- if (!(namedProperties[i].DeclaringType is TypeBuilder) || !con.DeclaringType.IsSubclassOf(((TypeBuilder)namedProperties[i].DeclaringType).m_runtimeType))
- throw new ArgumentException(Environment.GetResourceString("Argument_BadPropertyForConstructorBuilder"));
- }
- }
-
-
-
- if (propertyValues[i] != null && propType != typeof(object) && Type.GetTypeCode(propertyValues[i].GetType()) != Type.GetTypeCode(propType))
- throw new ArgumentException(Environment.GetResourceString("Argument_ConstantDoesntMatch"));
-
-
- writer.Write(SERIALIZATION_TYPE_PROPERTY);
-
-
- EmitType(writer, propType);
- EmitString(writer, namedProperties[i].Name);
- EmitValue(writer, propType, propertyValues[i]);
- }
-
-
- for (i = 0; i < namedFields.Length; i++) {
-
- if (namedFields[i] == null)
- throw new ArgumentNullException("namedFields[" + i + "]");
-
-
- Type fldType = namedFields[i].FieldType;
- if (fieldValues[i] == null && fldType.IsPrimitive)
- throw new ArgumentNullException("fieldValues[" + i + "]");
-
-
- if (!ValidateType(fldType))
- throw new ArgumentException(Environment.GetResourceString("Argument_BadTypeInCustomAttribute"));
-
-
- if (namedFields[i].DeclaringType != con.DeclaringType && (!(con.DeclaringType is TypeBuilderInstantiation)) && !con.DeclaringType.IsSubclassOf(namedFields[i].DeclaringType)) {
-
-
-
- if (!TypeBuilder.IsTypeEqual(namedFields[i].DeclaringType, con.DeclaringType)) {
-
-
-
-
- if (!(namedFields[i].DeclaringType is TypeBuilder) || !con.DeclaringType.IsSubclassOf(((TypeBuilder)namedFields[i].DeclaringType).m_runtimeType))
- throw new ArgumentException(Environment.GetResourceString("Argument_BadFieldForConstructorBuilder"));
- }
- }
-
-
-
- if (fieldValues[i] != null && fldType != typeof(object) && Type.GetTypeCode(fieldValues[i].GetType()) != Type.GetTypeCode(fldType))
- throw new ArgumentException(Environment.GetResourceString("Argument_ConstantDoesntMatch"));
-
-
- writer.Write(SERIALIZATION_TYPE_FIELD);
-
-
- EmitType(writer, fldType);
- EmitString(writer, namedFields[i].Name);
- EmitValue(writer, fldType, fieldValues[i]);
- }
-
-
- m_blob = ((MemoryStream)writer.BaseStream).ToArray();
- }
-
- private void EmitType(BinaryWriter writer, Type type)
- {
- if (type.IsPrimitive) {
- switch (Type.GetTypeCode(type)) {
- case TypeCode.SByte:
- writer.Write(SERIALIZATION_TYPE_I1);
- break;
- case TypeCode.Byte:
- writer.Write(SERIALIZATION_TYPE_U1);
- break;
- case TypeCode.Char:
- writer.Write(SERIALIZATION_TYPE_CHAR);
- break;
- case TypeCode.Boolean:
- writer.Write(SERIALIZATION_TYPE_BOOLEAN);
- break;
- case TypeCode.Int16:
- writer.Write(SERIALIZATION_TYPE_I2);
- break;
- case TypeCode.UInt16:
- writer.Write(SERIALIZATION_TYPE_U2);
- break;
- case TypeCode.Int32:
- writer.Write(SERIALIZATION_TYPE_I4);
- break;
- case TypeCode.UInt32:
- writer.Write(SERIALIZATION_TYPE_U4);
- break;
- case TypeCode.Int64:
- writer.Write(SERIALIZATION_TYPE_I8);
- break;
- case TypeCode.UInt64:
- writer.Write(SERIALIZATION_TYPE_U8);
- break;
- case TypeCode.Single:
- writer.Write(SERIALIZATION_TYPE_R4);
- break;
- case TypeCode.Double:
- writer.Write(SERIALIZATION_TYPE_R8);
- break;
- default:
- BCLDebug.Assert(false, "Invalid primitive type");
- break;
- }
- }
- else if (type.IsEnum) {
- writer.Write(SERIALIZATION_TYPE_ENUM);
- EmitString(writer, type.AssemblyQualifiedName);
- }
- else if (type == typeof(string)) {
- writer.Write(SERIALIZATION_TYPE_STRING);
- }
- else if (type == typeof(Type)) {
- writer.Write(SERIALIZATION_TYPE_TYPE);
- }
- else if (type.IsArray) {
- writer.Write(SERIALIZATION_TYPE_SZARRAY);
- EmitType(writer, type.GetElementType());
- }
- else {
-
- writer.Write(SERIALIZATION_TYPE_TAGGED_OBJECT);
- }
- }
-
- private void EmitString(BinaryWriter writer, string str)
- {
-
- byte[] utf8Str = Encoding.UTF8.GetBytes(str);
- uint length = (uint)utf8Str.Length;
- if (length <= 127) {
- writer.Write((byte)length);
- }
- else if (length <= 16383) {
- writer.Write((byte)((length >> 8) | 128));
- writer.Write((byte)(length & 255));
- }
- else {
- writer.Write((byte)((length >> 24) | 192));
- writer.Write((byte)((length >> 16) & 255));
- writer.Write((byte)((length >> 8) & 255));
- writer.Write((byte)(length & 255));
- }
- writer.Write(utf8Str);
- }
-
- private void EmitValue(BinaryWriter writer, Type type, object value)
- {
- if (type.IsEnum) {
- switch (Type.GetTypeCode(Enum.GetUnderlyingType(type))) {
- case TypeCode.SByte:
- writer.Write((sbyte)value);
- break;
- case TypeCode.Byte:
- writer.Write((byte)value);
- break;
- case TypeCode.Int16:
- writer.Write((short)value);
- break;
- case TypeCode.UInt16:
- writer.Write((ushort)value);
- break;
- case TypeCode.Int32:
- writer.Write((int)value);
- break;
- case TypeCode.UInt32:
- writer.Write((uint)value);
- break;
- case TypeCode.Int64:
- writer.Write((long)value);
- break;
- case TypeCode.UInt64:
- writer.Write((ulong)value);
- break;
- default:
- BCLDebug.Assert(false, "Invalid enum base type");
- break;
- }
- }
- else if (type == typeof(string)) {
- if (value == null)
- writer.Write((byte)255);
- else
- EmitString(writer, (string)value);
- }
- else if (type == typeof(Type)) {
- if (value == null)
- writer.Write((byte)255);
- else {
- string typeName = TypeNameBuilder.ToString((Type)value, TypeNameBuilder.Format.AssemblyQualifiedName);
- if (typeName == null)
- throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_InvalidTypeForCA"), value.GetType()));
- EmitString(writer, typeName);
- }
- }
- else if (type.IsArray) {
- if (value == null)
- writer.Write((uint)4294967295u);
- else {
- Array a = (Array)value;
- Type et = type.GetElementType();
- writer.Write(a.Length);
- for (int i = 0; i < a.Length; i++)
- EmitValue(writer, et, a.GetValue(i));
- }
- }
- else if (type.IsPrimitive) {
- switch (Type.GetTypeCode(type)) {
- case TypeCode.SByte:
- writer.Write((sbyte)value);
- break;
- case TypeCode.Byte:
- writer.Write((byte)value);
- break;
- case TypeCode.Char:
- writer.Write(Convert.ToInt16((char)value));
- break;
- case TypeCode.Boolean:
- writer.Write((byte)((bool)value ? 1 : 0));
- break;
- case TypeCode.Int16:
- writer.Write((short)value);
- break;
- case TypeCode.UInt16:
- writer.Write((ushort)value);
- break;
- case TypeCode.Int32:
- writer.Write((int)value);
- break;
- case TypeCode.UInt32:
- writer.Write((uint)value);
- break;
- case TypeCode.Int64:
- writer.Write((long)value);
- break;
- case TypeCode.UInt64:
- writer.Write((ulong)value);
- break;
- case TypeCode.Single:
- writer.Write((float)value);
- break;
- case TypeCode.Double:
- writer.Write((double)value);
- break;
- default:
- BCLDebug.Assert(false, "Invalid primitive type");
- break;
- }
- }
- else if (type == typeof(object)) {
-
-
-
-
- Type ot = value == null ? typeof(string) : value is Type ? typeof(Type) : value.GetType();
- EmitType(writer, ot);
- EmitValue(writer, ot, value);
- }
- else {
- string typename = "null";
-
- if (value != null)
- typename = value.GetType().ToString();
-
- throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Argument_BadParameterTypeForCAB"), typename));
- }
- }
-
-
-
-
-
- internal void CreateCustomAttribute(ModuleBuilder mod, int tkOwner)
- {
- CreateCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con).Token, false);
- }
-
-
-
-
-
-
-
-
- internal int PrepareCreateCustomAttributeToDisk(ModuleBuilder mod)
- {
- return mod.InternalGetConstructorToken(m_con, true).Token;
- }
-
-
-
-
- internal void CreateCustomAttribute(ModuleBuilder mod, int tkOwner, int tkAttrib, bool toDisk)
- {
- TypeBuilder.InternalCreateCustomAttribute(tkOwner, tkAttrib, m_blob, mod, toDisk, typeof(System.Diagnostics.DebuggableAttribute) == m_con.DeclaringType);
- }
-
- void _CustomAttributeBuilder.GetTypeInfoCount(out uint pcTInfo)
- {
- throw new NotImplementedException();
- }
-
- void _CustomAttributeBuilder.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo)
- {
- throw new NotImplementedException();
- }
-
- void _CustomAttributeBuilder.GetIDsOfNames( [In()]
- ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
- {
- throw new NotImplementedException();
- }
-
- void _CustomAttributeBuilder.Invoke(uint dispIdMember, [In()]
- ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)
- {
- throw new NotImplementedException();
- }
-
- internal ConstructorInfo m_con;
- internal object[] m_constructorArgs;
- internal byte[] m_blob;
- }
- }