Beispiel #1
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);
        }
 /// <summary>
 /// Gets the member identified by <paramref name="name"/> on the given <paramref name="type"/>. Use
 /// the <paramref name="bindingFlags"/> parameter to define the scope of the search.
 /// </summary>
 /// <returns>A single MemberInfo instance of the first found match or null if no match was found.</returns>
 public static MemberInfo Member(this Type type, string name, FasterflectFlags bindingFlags)
 {
     return(ReflectLookup.Member(type, name, bindingFlags));
 }
 /// <summary>
 /// Gets the member identified by <paramref name="name"/> on the given <paramref name="type"/>. This
 /// method searches for public and non-public instance fields on both the type itself and all parent classes.
 /// </summary>
 /// <returns>A single MemberInfo instance of the first found match or null if no match was found.</returns>
 public static MemberInfo Member(this Type type, string name)
 {
     return(ReflectLookup.Member(type, name));
 }