System.Linq.Expressions.Expression.Property C# (CSharp) Method

Property() private method

private Property ( Expression expression, PropertyInfo property ) : MemberExpression
expression Expression
property PropertyInfo
return MemberExpression
        public static MemberExpression Property(Expression expression, PropertyInfo property)
        {
            ContractUtils.RequiresNotNull(property, nameof(property));

            MethodInfo mi = property.GetGetMethod(nonPublic: true);

            if (mi == null)
            {
                mi = property.GetSetMethod(nonPublic: true);

                if (mi == null)
                {
                    throw Error.PropertyDoesNotHaveAccessor(property, nameof(property));
                }
                else if (mi.GetParametersCached().Length != 1)
                {
                    throw Error.IncorrectNumberOfMethodCallArguments(mi, nameof(property));
                }
            }
            else if (mi.GetParametersCached().Length != 0)
            {
                throw Error.IncorrectNumberOfMethodCallArguments(mi, nameof(property));
            }

            if (mi.IsStatic)
            {
                if (expression != null) throw Error.OnlyStaticPropertiesHaveNullInstance(nameof(expression));
            }
            else
            {
                if (expression == null) throw Error.OnlyStaticPropertiesHaveNullInstance(nameof(property));
                RequiresCanRead(expression, nameof(expression));
                if (!TypeUtils.IsValidInstanceType(property, expression.Type))
                {
                    throw Error.PropertyNotDefinedForType(property, expression.Type, nameof(property));
                }
            }

            return MemberExpression.Make(expression, property);
        }

Same methods

Expression::Property ( Expression instance, PropertyInfo indexer ) : IndexExpression
Expression::Property ( Expression instance, PropertyInfo indexer, IEnumerable arguments ) : IndexExpression
Expression::Property ( Expression instance, string propertyName ) : IndexExpression
Expression::Property ( Expression expression, MethodInfo propertyAccessor ) : MemberExpression
Expression::Property ( Expression expression, Type type, string propertyName ) : MemberExpression
Expression::Property ( Expression expression, string propertyName ) : MemberExpression

Usage Example

Ejemplo n.º 1
0
        private static Expression <Func <T, bool> > PrimaryKeyEquals(PropertyInfo property, int value)
        {
            var param = Expression.Parameter(typeof(T));
            var body  = Expression.Equal(Expression.Property(param, property), Expression.Constant(value));

            return(Expression.Lambda <Func <T, bool> >(body, param));
        }
All Usage Examples Of System.Linq.Expressions.Expression::Property
Expression