Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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;
            }
        }