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)); }