static private ConditionalAccessRequiresNonStaticMember ( ) : |
||
Résultat |
public static ConditionalMemberCSharpExpression ConditionalProperty(Expression expression, PropertyInfo property) { RequiresCanRead(expression, nameof(expression)); ContractUtils.RequiresNotNull(property, nameof(property)); if (!property.CanRead) { throw Error.ConditionalAccessRequiresReadableProperty(); } if (property.GetIndexParameters().Length != 0) { throw Error.ConditionalAccessRequiresReadableProperty(); } if (property.GetGetMethod(true).IsStatic) { throw Error.ConditionalAccessRequiresNonStaticMember(); } var type = expression.Type.GetNonNullReceiverType(); if (!TypeUtils.IsValidInstanceType(property, type)) { throw LinqError.PropertyNotDefinedForType(property, type); } return(ConditionalMemberCSharpExpression.Make(expression, property)); }
private static void ValidateConditionalMethod(ref Expression instance, MethodInfo method) { ContractUtils.RequiresNotNull(method, nameof(method)); ValidateMethodInfo(method); if (method.IsStatic) { var parameters = method.GetParametersCached(); if (!method.IsDefined(typeof(ExtensionAttribute), false) || parameters.Length == 0 /* NB: someone could craft a method with [ExtensionAttribute] in IL */) { throw Error.ConditionalAccessRequiresNonStaticMember(); } if (instance == null) { throw Error.ExtensionMethodRequiresInstance(); } instance = ValidateOneArgument(parameters[0], instance); } else { RequiresCanRead(instance, nameof(instance)); var type = instance.Type.GetNonNullReceiverType(); ValidateCallInstanceType(type, method); } }
public static ConditionalMemberCSharpExpression ConditionalField(Expression expression, FieldInfo field) { RequiresCanRead(expression, nameof(expression)); ContractUtils.RequiresNotNull(field, nameof(field)); if (field.IsStatic) { throw Error.ConditionalAccessRequiresNonStaticMember(); } var type = expression.Type.GetNonNullReceiverType(); if (!TypeUtils1.AreReferenceAssignable(field.DeclaringType, type)) { throw LinqError.FieldInfoNotDefinedForType(field.DeclaringType, field.Name, type); } return(ConditionalMemberCSharpExpression.Make(expression, field)); }