Inheritance: System.Attribute
Esempio n. 1
0
 internal static bool IsDefined(RuntimeFieldInfo field)
 {
     return(MarshalAsAttribute.GetCustomAttribute(field) != null);
 }
Esempio n. 2
0
 internal static bool IsDefined(RuntimeParameterInfo parameter)
 {
     return(MarshalAsAttribute.GetCustomAttribute(parameter) != null);
 }
Esempio n. 3
0
 internal static Attribute GetCustomAttribute(RuntimeFieldInfo field)
 {
     return(MarshalAsAttribute.GetCustomAttribute(field.MetadataToken, field.GetRuntimeModule()));
 }
Esempio n. 4
0
 private void Init(MarshalAsAttribute marshalAs)
 {
     Type type = typeof(MarshalAsAttribute);
     this.m_ctor = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance)[0];
     CustomAttributeTypedArgument[] array = new CustomAttributeTypedArgument[] { new CustomAttributeTypedArgument(marshalAs.Value) };
     this.m_typedCtorArgs = Array.AsReadOnly<CustomAttributeTypedArgument>(array);
     int num = 3;
     if (marshalAs.MarshalType != null)
     {
         num++;
     }
     if (marshalAs.MarshalTypeRef != null)
     {
         num++;
     }
     if (marshalAs.MarshalCookie != null)
     {
         num++;
     }
     num++;
     num++;
     if (marshalAs.SafeArrayUserDefinedSubType != null)
     {
         num++;
     }
     CustomAttributeNamedArgument[] argumentArray = new CustomAttributeNamedArgument[num];
     num = 0;
     argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("ArraySubType"), marshalAs.ArraySubType);
     argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("SizeParamIndex"), marshalAs.SizeParamIndex);
     argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("SizeConst"), marshalAs.SizeConst);
     argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("IidParameterIndex"), marshalAs.IidParameterIndex);
     argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("SafeArraySubType"), marshalAs.SafeArraySubType);
     if (marshalAs.MarshalType != null)
     {
         argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("MarshalType"), marshalAs.MarshalType);
     }
     if (marshalAs.MarshalTypeRef != null)
     {
         argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("MarshalTypeRef"), marshalAs.MarshalTypeRef);
     }
     if (marshalAs.MarshalCookie != null)
     {
         argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("MarshalCookie"), marshalAs.MarshalCookie);
     }
     if (marshalAs.SafeArrayUserDefinedSubType != null)
     {
         argumentArray[num++] = new CustomAttributeNamedArgument(type.GetField("SafeArrayUserDefinedSubType"), marshalAs.SafeArrayUserDefinedSubType);
     }
     this.m_namedArgs = Array.AsReadOnly<CustomAttributeNamedArgument>(argumentArray);
 }
Esempio n. 5
0
 internal static Attribute GetCustomAttribute(RuntimeParameterInfo parameter)
 {
     return(MarshalAsAttribute.GetCustomAttribute(parameter.MetadataToken, parameter.GetRuntimeModule()));
 }
Esempio n. 6
0
		internal MarshalAsAttribute ToMarshalAsAttribute () {
			MarshalAsAttribute attr = new MarshalAsAttribute (t);
			attr.ArraySubType = tbase;
			attr.MarshalCookie = mcookie;
			attr.MarshalType = marshaltype;
			attr.MarshalTypeRef = marshaltyperef;
			if (count == -1)
				attr.SizeConst = 0;
			else
				attr.SizeConst = count;
			if (param_num == -1)
				attr.SizeParamIndex = 0;
			else
				attr.SizeParamIndex = (short)param_num;
			return attr;
		}
Esempio n. 7
0
		/* to build a ParameterInfo for the return type of a method */
		internal ParameterInfo (Type type, MemberInfo member, MarshalAsAttribute marshalAs) {
			this.ClassImpl = type;
			this.MemberImpl = member;
			this.NameImpl = "";
			this.PositionImpl = -1;	// since parameter positions are zero-based, return type pos is -1
			this.AttrsImpl = ParameterAttributes.Retval;
			this.marshalAs = marshalAs;
		}
		/// <summary>
		/// Builds the marshal as attribute.
		/// </summary>
		/// <param name="marshalAsAttribute">The marshal as attribute.</param>
		/// <param name="isReturn">if set to <c>true</c> [is return].</param>
		/// <returns></returns>
		public static string BuildMarshalAsAttribute(MarshalAsAttribute marshalAsAttribute, bool isReturn)
		{
			var builder = new StringBuilder();

			builder.AppendFormat("[{0}MarshalAs(", isReturn ? "return: " : string.Empty);
			builder.AppendFormat("UnmanagedType.{0}", marshalAsAttribute.Value);

			if (marshalAsAttribute.SizeConst != 0)
				builder.AppendFormat(", SizeConst = {0}", marshalAsAttribute.SizeConst);

			if (marshalAsAttribute.Value == UnmanagedType.CustomMarshaler)
				builder.AppendFormat(", MarshalTypeRef = typeof({0})", marshalAsAttribute.MarshalTypeRef);

			if (marshalAsAttribute.ArraySubType != default(UnmanagedType))
				builder.AppendFormat(", ArraySubType = UnmanagedType.{0}", marshalAsAttribute.ArraySubType);

			builder.Append(")]");

			return builder.ToString();
		}
Esempio n. 9
0
        private void Init(MarshalAsAttribute marshalAs)
        {
            Type type = typeof(MarshalAsAttribute);
            m_ctor = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance)[0];
            m_typedCtorArgs = Array.AsReadOnly(new CustomAttributeTypedArgument[]
            {
                new CustomAttributeTypedArgument(marshalAs.Value),
            });

            int i = 3; // ArraySubType, SizeParamIndex, SizeConst
            if (marshalAs.MarshalType != null) i++;
            if (marshalAs.MarshalTypeRef != null) i++;
            if (marshalAs.MarshalCookie != null) i++;
            i++; // IidParameterIndex
            i++; // SafeArraySubType
            if (marshalAs.SafeArrayUserDefinedSubType != null) i++;
            CustomAttributeNamedArgument[] namedArgs = new CustomAttributeNamedArgument[i];

            // For compatibility with previous runtimes, we always include the following 5 attributes, regardless
            // of if they apply to the UnmanagedType being marshaled or not.
            i = 0;
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("ArraySubType"), marshalAs.ArraySubType);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeParamIndex"), marshalAs.SizeParamIndex);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeConst"), marshalAs.SizeConst);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("IidParameterIndex"), marshalAs.IidParameterIndex);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SafeArraySubType"), marshalAs.SafeArraySubType);
            if (marshalAs.MarshalType != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalType"), marshalAs.MarshalType);
            if (marshalAs.MarshalTypeRef != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalTypeRef"), marshalAs.MarshalTypeRef);
            if (marshalAs.MarshalCookie != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalCookie"), marshalAs.MarshalCookie);
            if (marshalAs.SafeArrayUserDefinedSubType != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SafeArrayUserDefinedSubType"), marshalAs.SafeArrayUserDefinedSubType);

            m_namedArgs = Array.AsReadOnly(namedArgs);
        }
Esempio n. 10
0
		/* to build a ParameterInfo for the return type of a method */
#if NET_4_0
		internal MonoParameterInfo (Type type, MemberInfo member, MarshalAsAttribute marshalAs) {
Esempio n. 11
0
		internal static ParameterInfo New (Type type, MemberInfo member, MarshalAsAttribute marshalAs)
		{
			return new MonoParameterInfo (type, member, marshalAs);
		}
        private void Init(MarshalAsAttribute marshalAs)
        {
            Type type = typeof(MarshalAsAttribute);
            m_ctor = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance)[0];
            m_typedCtorArgs = Array.AsReadOnly(new CustomAttributeTypedArgument[]
            {
                new CustomAttributeTypedArgument(marshalAs.Value),
            });

            int i = 3; // ArraySubType, SizeParamIndex, SizeConst
            if (marshalAs.MarshalType != null) i++;
            if (marshalAs.MarshalTypeRef != null) i++;
            if (marshalAs.MarshalCookie != null) i++;
            CustomAttributeNamedArgument[] namedArgs = new CustomAttributeNamedArgument[i];

            i = 0;
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("ArraySubType"), marshalAs.ArraySubType);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeParamIndex"), marshalAs.SizeParamIndex);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeConst"), marshalAs.SizeConst);
            if (marshalAs.MarshalType != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalType"), marshalAs.MarshalType);
            if (marshalAs.MarshalTypeRef != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalTypeRef"), marshalAs.MarshalTypeRef);
            if (marshalAs.MarshalCookie != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalCookie"), marshalAs.MarshalCookie);

            m_namedArgs = Array.AsReadOnly(namedArgs);
        }
Esempio n. 13
0
		internal static ParameterInfo New (Type type, MemberInfo member, MarshalAsAttribute marshalAs)
		{
#if NET_4_0
			return new MonoParameterInfo (type, member, marshalAs);
#else
			return new ParameterInfo (type, member, marshalAs);
#endif	
		}
Esempio n. 14
0
        private void Init(MarshalAsAttribute marshalAs)
        { 
            Type type = typeof(MarshalAsAttribute); 
            m_ctor = type.GetConstructors(BindingFlags.Public | BindingFlags.Instance)[0];
            m_typedCtorArgs = Array.AsReadOnly(new CustomAttributeTypedArgument[] 
            {
                new CustomAttributeTypedArgument(marshalAs.Value),
            });
 
            int i = 3; // ArraySubType, SizeParamIndex, SizeConst
            if (marshalAs.MarshalType != null) i++; 
            if (marshalAs.MarshalTypeRef != null) i++; 
            if (marshalAs.MarshalCookie != null) i++;
#if FEATURE_COMINTEROP 
            i++; // IidParameterIndex
            i++; // SafeArraySubType
            if (marshalAs.SafeArrayUserDefinedSubType != null) i++;
#endif // FEATURE_COMINTEROP 
            CustomAttributeNamedArgument[] namedArgs = new CustomAttributeNamedArgument[i];
 
            i = 0; 
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("ArraySubType"), marshalAs.ArraySubType);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeParamIndex"), marshalAs.SizeParamIndex); 
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SizeConst"), marshalAs.SizeConst);
#if FEATURE_COMINTEROP
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("IidParameterIndex"), marshalAs.IidParameterIndex);
            namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SafeArraySubType"), marshalAs.SafeArraySubType); 
#endif // FEATURE_COMINTEROP
            if (marshalAs.MarshalType != null) 
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalType"), marshalAs.MarshalType); 
            if (marshalAs.MarshalTypeRef != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalTypeRef"), marshalAs.MarshalTypeRef); 
            if (marshalAs.MarshalCookie != null)
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("MarshalCookie"), marshalAs.MarshalCookie);
#if FEATURE_COMINTEROP
            if (marshalAs.SafeArrayUserDefinedSubType != null) 
                namedArgs[i++] = new CustomAttributeNamedArgument(type.GetField("SafeArrayUserDefinedSubType"), marshalAs.SafeArrayUserDefinedSubType);
#endif // FEATURE_COMINTEROP 
 
            m_namedArgs = Array.AsReadOnly(namedArgs);
        }