private static Action <object, object> CreateAddHandler(EventInfo eventInfo, IDelegateCreatorHelper helper) { var methodInfo = eventInfo.GetAddMethod(); if (methodInfo == null) { return(null); } Debug.Assert(methodInfo.IsPublic); return(helper.CreateAddOrRemoveHandler(methodInfo)); }
private static Func <object, object> CreateGetter(PropertyInfo propertyInfo, IDelegateCreatorHelper helper) { if (!propertyInfo.CanRead) { return(null); } var methodInfo = propertyInfo.GetGetMethod(); if (methodInfo == null) { return(null); } Debug.Assert(methodInfo.IsPublic); return(helper.CreateGetter(methodInfo)); }
private static Action <object> CreateResetter(Type componentType, PropertyInfo propertyInfo, IDelegateCreatorHelper helper) { MethodInfo methodInfo; try { methodInfo = componentType.GetMethod(string.Format(CultureInfo.InvariantCulture, "Reset{0}", propertyInfo.Name), BindingFlags.Public | BindingFlags.Instance, null, Type.EmptyTypes, null); if ((methodInfo == null) || methodInfo.IsGenericMethod) { return(null); } } catch (AmbiguousMatchException) { return(null); } Debug.Assert(methodInfo.IsPublic); return(helper.CreateResetter(methodInfo)); }