Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RequiresCanWrite()

static void System.Linq.Expressions.Expression< TDelegate >.RequiresCanWrite ( Expression< TDelegate > expression,
string paramName )
inlinestaticprivateinherited

Definition at line 2581 of file Expression.cs.

2582 {
2583 if (expression == null)
2584 {
2585 throw new ArgumentNullException(paramName);
2586 }
2587 switch (expression.NodeType)
2588 {
2589 case ExpressionType.Index:
2590 {
2591 PropertyInfo indexer = ((IndexExpression)expression).Indexer;
2592 if (indexer == null || indexer.CanWrite)
2593 {
2594 return;
2595 }
2596 break;
2597 }
2598 case ExpressionType.MemberAccess:
2599 {
2600 MemberInfo member = ((MemberExpression)expression).Member;
2601 if (member is PropertyInfo propertyInfo)
2602 {
2603 if (propertyInfo.CanWrite)
2604 {
2605 return;
2606 }
2607 break;
2608 }
2609 FieldInfo fieldInfo = (FieldInfo)member;
2610 if (!fieldInfo.IsInitOnly && !fieldInfo.IsLiteral)
2611 {
2612 return;
2613 }
2614 break;
2615 }
2616 case ExpressionType.Parameter:
2617 return;
2618 }
2619 throw Error.ExpressionMustBeWriteable(paramName);
2620 }

References System.Linq.Expressions.Error.ExpressionMustBeWriteable().

Referenced by System.Linq.Expressions.Expression< TDelegate >.AddAssign(), System.Linq.Expressions.Expression< TDelegate >.AddAssignChecked(), System.Linq.Expressions.Expression< TDelegate >.AndAssign(), System.Linq.Expressions.Expression< TDelegate >.Assign(), System.Linq.Expressions.Expression< TDelegate >.DivideAssign(), System.Linq.Expressions.Expression< TDelegate >.ExclusiveOrAssign(), System.Linq.Expressions.Expression< TDelegate >.LeftShiftAssign(), System.Linq.Expressions.Expression< TDelegate >.MakeOpAssignUnary(), System.Linq.Expressions.Expression< TDelegate >.ModuloAssign(), System.Linq.Expressions.Expression< TDelegate >.MultiplyAssign(), System.Linq.Expressions.Expression< TDelegate >.MultiplyAssignChecked(), System.Linq.Expressions.Expression< TDelegate >.OrAssign(), System.Linq.Expressions.Expression< TDelegate >.PowerAssign(), System.Linq.Expressions.Expression< TDelegate >.RightShiftAssign(), System.Linq.Expressions.Expression< TDelegate >.SubtractAssign(), and System.Linq.Expressions.Expression< TDelegate >.SubtractAssignChecked().