private FieldInfo GetRelativeField(Type type, InfoSecSensitiveField attribute) { var relativeFieldName = attribute.RelativeFieldName; if (string.IsNullOrWhiteSpace(relativeFieldName)) { return(null); } return(type.GetField(relativeFieldName, BindingFlags.NonPublic | BindingFlags.Instance)); }
public SimpleExpr(Expression parent, FieldInfo fieldInfo, InfoSecSensitiveField attribute, FieldInfo relativeFieldInfo) { fieldName = fieldInfo.Name; this.attribute = attribute; var fr = Expression.Field(parent, fieldInfo); var valueParameter = Expression.Parameter(typeof(string)); var parameters = new ParameterExpression[] { Constants.parameter, valueParameter }; setter = Expression.Lambda <Action <object, string> >(Expression.Assign(fr, valueParameter), parameters).Compile(); getter = Expression.Lambda <Func <object, string> >(fr, Constants.parameter).Compile(); if (relativeFieldInfo != null) { var relativeFr = Expression.Field(parent, relativeFieldInfo); relativeSetter = Expression.Lambda <Action <object, string> >(Expression.Assign(relativeFr, valueParameter), parameters).Compile(); } else { relativeSetter = null; } }