Beispiel #1
0
        } // func GetInvokeBinder

        internal CallSiteBinder GetInvokeMemberBinder(string sMember, CallInfo callInfo)
        {
            CallSiteBinder b;
            MemberCallInfo mci = new MemberCallInfo(sMember, callInfo);

            lock (invokeMemberBinder)
                if (!invokeMemberBinder.TryGetValue(mci, out b))
                {
                    b = invokeMemberBinder[mci] = new LuaInvokeMemberBinder(this, sMember, callInfo);
                }
            return(b);
        } // func GetInvokeMemberBinder
Beispiel #2
0
        internal static MemberSetter Setter(Type type, string name, MemberTypes memberType, FasterflectFlags bindingFlags, MemberInfo memberInfo)
        {
            MemberCallInfo info  = new MemberCallInfo(type, name, memberType, bindingFlags);
            MemberSetter   value = Setters.Get(info);

            if (value != null)
            {
                return(value);
            }
            memberInfo = memberInfo ?? ReflectLookup.Member(info.TargetType, info.MemberName, info.BindingFlags);
            if (memberInfo == null)
            {
                if (memberType == MemberTypes.Field)
                {
                    throw new MissingFieldException(info.TargetType.FullName, info.MemberName);
                }
                throw new MissingMemberException(info.TargetType.FullName, info.MemberName);
            }
            info.MemberType = memberInfo.MemberType;
            value           = (MemberSetter) new MemberSetEmitter(memberInfo).GetDelegate();
            Setters.Insert(info, value);
            return(value);
        }
Beispiel #3
0
            } // func GetHashCode

            public override bool Equals(object obj)
            {
                MemberCallInfo mci = obj as MemberCallInfo;

                return(mci != null && mci.sMember == sMember && mci.ci.Equals(ci));
            } // func Equals