public MemberAnnotation Annotate <T>(Expression <Proc> memberExpression, params Func <string, T>[] args) { MemberAnnotation memberAnnotation = ForMember(memberExpression); memberAnnotation.Annotate(args); return(memberAnnotation); }
public static T Annotation <T>(this object target, Expression <Funclet> expression, object key) { ClassAnnotation classAnnotation = GetOrCreateAnnotation(target); MemberAnnotation memberAnnotation = classAnnotation.ForMember(expression); return((T)memberAnnotation[key]); }
public MemberAnnotation ForMember(LambdaExpression expression) { if (expression == null) { throw new ArgumentException("expression"); } MemberInfo info = GetMemberKey(expression); MemberAnnotation memberAnnotation; if (!_memberAnnotations.TryGetValue(info, out memberAnnotation)) { lock (_memberAnnotations) { if (!_memberAnnotations.TryGetValue(info, out memberAnnotation)) { memberAnnotation = new MemberAnnotation(info, this); _memberAnnotations[info] = memberAnnotation; } } } return(memberAnnotation); }