public MethodNullability(MemberNullabilityCache memberNullabilityCache, MethodDefinition method, XElement externalAnnotation) : base(memberNullabilityCache) { this.method = method; parameterAttributes = method.Parameters.Select(item => item.GetNullabilityAttributes()).ToArray(); returnValueAttributes = method.GetNullabilityAttributes(); if (externalAnnotation == null) { return; } returnValueAttributes |= externalAnnotation.GetNullabilityAttributes(); foreach (var childElement in externalAnnotation.Elements("parameter")) { var parameterName = childElement.Attribute("name")?.Value; if (parameterName == null) { continue; } var parameter = method.Parameters.FirstOrDefault(p => p.Name == parameterName); if (parameter == null) { continue; } var parameterIndex = parameter.Index; parameterAttributes[parameterIndex] |= childElement.GetNullabilityAttributes(); } }
void MergeFrom(PropertyNullability baseProperty) { if (baseProperty == null) { return; } baseProperty.ResolveInheritance(); nullabilityAttributes |= baseProperty.nullabilityAttributes; }
public PropertyNullability(PropertyDefinition property, XElement externalAnnotation) { this.property = property; nullabilityAttributes = property.GetNullabilityAttributes(); if (externalAnnotation == null) { return; } nullabilityAttributes |= externalAnnotation.GetNullabilityAttributes(); }
void MergeFrom(MethodNullability baseMethod) { if (baseMethod == null) { return; } baseMethod.ResolveInheritance(); returnValueAttributes |= baseMethod.returnValueAttributes; for (var i = 0; i < parameterAttributes.Length; i++) { parameterAttributes[i] |= baseMethod.parameterAttributes[i]; } }