Пример #1
0
        protected internal override CodeLocation GetMemberSourceLocation(StaticMemberWrapper member)
        {
            var memberHandle = (MemberReference)member.Handle;

            switch (memberHandle.MetadataToken.TokenType)
            {
            case TokenType.TypeDef:
                return(GuessTypeSourceLocation((TypeDefinition)memberHandle));

            case TokenType.Method:
                return(GetMethodSourceLocation((MethodDefinition)memberHandle));

            case TokenType.GenericParam:
                var owner = ((GenericParameter)memberHandle).Owner;

                if (owner is TypeDefinition)
                {
                    return(GuessTypeSourceLocation((TypeDefinition)owner));
                }

                if (owner is MethodDefinition)
                {
                    return(GetMethodSourceLocation((MethodDefinition)owner));
                }

                return(CodeLocation.Unknown);

            default:
                return(GuessTypeSourceLocation((TypeDefinition)memberHandle.DeclaringType));
            }
        }
        /// <summary>
        /// Creates a wrapper.
        /// </summary>
        /// <param name="policy">The reflection policy.</param>
        /// <param name="handle">The underlying reflection object.</param>
        /// <param name="member">The member to which the parameter belongs.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="policy"/>, <paramref name="handle"/>
        /// or <paramref name="member"/> is null.</exception>
        public StaticParameterWrapper(StaticReflectionPolicy policy, object handle, StaticMemberWrapper member)
            : base(policy, handle)
        {
            if (member == null)
                throw new ArgumentNullException("member");

            this.member = member;
        }
Пример #3
0
        protected internal override string GetMemberName(StaticMemberWrapper member)
        {
            var memberHandle = (MemberReference)member.Handle;

            // Strip off generic parameter count from name.
            var name    = memberHandle.Name;
            var tickPos = name.IndexOf('`');

            return(tickPos < 0 ? name : name.Substring(0, tickPos));
        }
Пример #4
0
        /// <summary>
        /// Creates a wrapper.
        /// </summary>
        /// <param name="policy">The reflection policy.</param>
        /// <param name="handle">The underlying reflection object.</param>
        /// <param name="member">The member to which the parameter belongs.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="policy"/>, <paramref name="handle"/>
        /// or <paramref name="member"/> is null.</exception>
        public StaticParameterWrapper(StaticReflectionPolicy policy, object handle, StaticMemberWrapper member)
            : base(policy, handle)
        {
            if (member == null)
            {
                throw new ArgumentNullException("member");
            }

            this.member = member;
        }
        protected override string GetMemberName(StaticMemberWrapper member)
        {
            IDeclaredElement memberHandle = (IDeclaredElement)member.Handle;
            string shortName = memberHandle.ShortName;

            if (shortName == "get_this")
                shortName = "get_Item";
            else if (shortName == "set_this")
                shortName = "set_Item";

            IOverridableMember overridableMemberHandle = memberHandle as IOverridableMember;
            if (overridableMemberHandle != null && overridableMemberHandle.IsExplicitImplementation)
                return overridableMemberHandle.ExplicitImplementations[0].DeclaringType.GetCLRName().Replace('+', '.') + "." + shortName;

            return shortName;
        }
 protected override IEnumerable<StaticAttributeWrapper> GetMemberCustomAttributes(StaticMemberWrapper member)
 {
     IAttributesOwner memberHandle = (IAttributesOwner)member.Handle;
     return GetAttributesForAttributeOwner(memberHandle);
 }
 private StaticMethodWrapper WrapAccessor(IAccessor accessorHandle, StaticMemberWrapper member)
 {
     return accessorHandle != null ? new StaticMethodWrapper(this, accessorHandle, member.DeclaringType, member.ReflectedType, member.Substitution) : null;
 }
Пример #8
0
        /// <inheritdoc />
        public override bool Equals(object obj)
        {
            StaticMemberWrapper other = obj as StaticMemberWrapper;

            return(EqualsByHandle(other) && Equals(declaringType, other.declaringType));
        }
Пример #9
0
 /// <summary>
 /// Gets the source code location of a member.
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The source code location, or <see cref="CodeLocation.Unknown" /> if not available.</returns>
 protected internal abstract CodeLocation GetMemberSourceLocation(StaticMemberWrapper member);
        protected internal override string GetMemberName(StaticMemberWrapper member)
        {
            var memberHandle = (MemberReference)member.Handle;

            // Strip off generic parameter count from name.
            var name = memberHandle.Name;
            var tickPos = name.IndexOf('`');
            return tickPos < 0 ? name : name.Substring(0, tickPos);
        }
 /// <summary>
 /// Gets the short name of a member.
 /// In the case of a generic type, should exclude the generic parameter count
 /// part of the name.  eg. "`1"
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The member's name.</returns>
 protected internal abstract string GetMemberName(StaticMemberWrapper member);
Пример #12
0
 private StaticMethodWrapper WrapAccessor(MethodDefinition accessorHandle, StaticMemberWrapper member)
 {
     return(accessorHandle != null ? new StaticMethodWrapper(this, accessorHandle, member.DeclaringType, member.ReflectedType, member.Substitution) : null);
 }
Пример #13
0
 protected internal override IEnumerable <StaticAttributeWrapper> GetMemberCustomAttributes(StaticMemberWrapper member)
 {
     Mono.Cecil.ICustomAttributeProvider memberHandle = member.Handle as Mono.Cecil.ICustomAttributeProvider;
     if (memberHandle != null)
     {
         return(EnumerateAttributes(memberHandle.CustomAttributes));
     }
     return(EmptyArray <StaticAttributeWrapper> .Instance);
 }
        protected internal override CodeLocation GetMemberSourceLocation(StaticMemberWrapper member)
        {
            var memberHandle = (MemberReference)member.Handle;

            switch (memberHandle.MetadataToken.TokenType)
            {
                case TokenType.TypeDef:
                    return GuessTypeSourceLocation((TypeDefinition)memberHandle);

                case TokenType.Method:
                    return GetMethodSourceLocation((MethodDefinition)memberHandle);

                case TokenType.GenericParam:
                    var owner = ((GenericParameter)memberHandle).Owner;

                    if (owner is TypeDefinition)
                        return GuessTypeSourceLocation((TypeDefinition)owner);

                    if (owner is MethodDefinition)
                        return GetMethodSourceLocation((MethodDefinition)owner);

                    return CodeLocation.Unknown;

                default:
                    return GuessTypeSourceLocation((TypeDefinition)memberHandle.DeclaringType);
            }
        }
Пример #15
0
 protected override CodeLocation GetMemberSourceLocation(StaticMemberWrapper member)
 {
     IDeclaredElement memberHandle = (IDeclaredElement)member.Handle;
     return GetDeclaredElementSourceLocation(memberHandle);
 }
Пример #16
0
 /// <summary>
 /// Gets the custom attributes of a member.
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The custom attributes.</returns>
 protected internal abstract IEnumerable <StaticAttributeWrapper> GetMemberCustomAttributes(StaticMemberWrapper member);
 /// <summary>
 /// Gets the custom attributes of a member.
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The custom attributes.</returns>
 protected internal abstract IEnumerable<StaticAttributeWrapper> GetMemberCustomAttributes(StaticMemberWrapper member);
Пример #18
0
 /// <summary>
 /// Gets the short name of a member.
 /// In the case of a generic type, should exclude the generic parameter count
 /// part of the name.  eg. "`1"
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The member's name.</returns>
 protected internal abstract string GetMemberName(StaticMemberWrapper member);
 /// <summary>
 /// Gets the source code location of a member.
 /// </summary>
 /// <param name="member">The member, not null.</param>
 /// <returns>The source code location, or <see cref="CodeLocation.Unknown" /> if not available.</returns>
 protected internal abstract CodeLocation GetMemberSourceLocation(StaticMemberWrapper member);
 protected internal override IEnumerable<StaticAttributeWrapper> GetMemberCustomAttributes(StaticMemberWrapper member)
 {
     Mono.Cecil.ICustomAttributeProvider memberHandle = member.Handle as Mono.Cecil.ICustomAttributeProvider;
     if (memberHandle != null)
         return EnumerateAttributes(memberHandle.CustomAttributes);
     return EmptyArray<StaticAttributeWrapper>.Instance;
 }