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(); } }
public PropertyNullability(MemberNullabilityCache memberNullabilityCache, PropertyDefinition property, XElement externalAnnotation) : base(memberNullabilityCache) { this.property = property; nullabilityAttributes = property.GetNullabilityAttributes(); if (externalAnnotation == null) { return; } nullabilityAttributes |= externalAnnotation.GetNullabilityAttributes(); }
void ResolveInheritance() { if (isInheritanceResolved) { return; } isInheritanceResolved = true; if (!property.HasThis) { return; } foreach (var property in property.EnumerateOverridesAndImplementations()) { var nullability = MemberNullabilityCache.GetOrCreate(property.Resolve()); MergeFrom(nullability); } }
public MemberNullability(MemberNullabilityCache memberNullabilityCache) { MemberNullabilityCache = memberNullabilityCache; }