Ejemplo n.º 1
0
        /// <summary>
        /// Gets the hash code of a member
        /// </summary>
        /// <param name="a">Member</param>
        /// <returns></returns>
        public int GetHashCode(DmdMemberInfo a)
        {
            if ((object)a == null)
            {
                return(0);
            }

            switch (a.MemberType)
            {
            case DmdMemberTypes.TypeInfo:
            case DmdMemberTypes.NestedType:
                return(GetHashCode((DmdType)a));

            case DmdMemberTypes.Field:
                return(GetHashCode((DmdFieldInfo)a));

            case DmdMemberTypes.Method:
            case DmdMemberTypes.Constructor:
                return(GetHashCode((DmdMethodBase)a));

            case DmdMemberTypes.Property:
                return(GetHashCode((DmdPropertyInfo)a));

            case DmdMemberTypes.Event:
                return(GetHashCode((DmdEventInfo)a));
            }

            Debug.Fail($"Unknown type: {a.GetType()}");
            return(0);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Compares two members
        /// </summary>
        /// <param name="a">First member</param>
        /// <param name="b">Second member</param>
        /// <returns></returns>
        public bool Equals(DmdMemberInfo a, DmdMemberInfo b)
        {
            if ((object)a == b)
            {
                return(true);
            }
            if ((object)a == null || (object)b == null)
            {
                return(false);
            }

            switch (a.MemberType)
            {
            case DmdMemberTypes.TypeInfo:
            case DmdMemberTypes.NestedType:
                return(Equals((DmdType)a, b as DmdType));

            case DmdMemberTypes.Field:
                return(Equals((DmdFieldInfo)a, b as DmdFieldInfo));

            case DmdMemberTypes.Method:
            case DmdMemberTypes.Constructor:
                return(Equals((DmdMethodBase)a, b as DmdMethodBase));

            case DmdMemberTypes.Property:
                return(Equals((DmdPropertyInfo)a, b as DmdPropertyInfo));

            case DmdMemberTypes.Event:
                return(Equals((DmdEventInfo)a, b as DmdEventInfo));
            }

            return(false);
        }
Ejemplo n.º 3
0
        void Write(DmdMemberInfo member)
        {
            switch (member.MemberType)
            {
            case DmdMemberTypes.TypeInfo:
            case DmdMemberTypes.NestedType:
                Write((DmdType)member);
                break;

            case DmdMemberTypes.Field:
                Write((DmdFieldInfo)member);
                break;

            case DmdMemberTypes.Constructor:
            case DmdMemberTypes.Method:
                Write((DmdMethodBase)member);
                break;

            case DmdMemberTypes.Property:
                Write((DmdPropertyInfo)member);
                break;

            case DmdMemberTypes.Event:
                Write((DmdEventInfo)member);
                break;

            default:
                Debug.Fail($"Unknown member: {member.GetType()}");
                break;
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Checks if this instance and <paramref name="other"/> have the same metadata definition
 /// </summary>
 /// <param name="other">Other member</param>
 /// <returns></returns>
 public bool HasSameMetadataDefinitionAs(DmdMemberInfo other)
 {
     if (other is null)
     {
         throw new ArgumentNullException(nameof(other));
     }
     return(other.Module == Module && other.MetadataToken == MetadataToken && MetadataToken != 0);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="memberInfo">A property or a field</param>
 /// <param name="typedArgument"></param>
 public DmdCustomAttributeNamedArgument(DmdMemberInfo memberInfo, DmdCustomAttributeTypedArgument typedArgument)
 {
     if ((object)typedArgument.ArgumentType == null)
     {
         throw new ArgumentException();
     }
     MemberInfo = memberInfo ?? throw new ArgumentNullException(nameof(memberInfo));
     TypedValue = typedArgument;
 }
Ejemplo n.º 6
0
 string FormatCore(DmdMemberInfo member)
 {
     Write(member);
     return(writer.ToString());
 }
Ejemplo n.º 7
0
 public static string Format(DmdMemberInfo member, bool serializable = false)
 {
     using (var formatter = new DmdMemberFormatter(serializable ? GlobalFlags.Serializable : GlobalFlags.None))
         return(formatter.FormatCore(member));
 }