예제 #1
0
    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();
        }
    }
예제 #2
0
    void MergeFrom(PropertyNullability baseProperty)
    {
        if (baseProperty == null)
        {
            return;
        }

        baseProperty.ResolveInheritance();

        nullabilityAttributes |= baseProperty.nullabilityAttributes;
    }
예제 #3
0
        public PropertyNullability(PropertyDefinition property, XElement externalAnnotation)
        {
            this.property         = property;
            nullabilityAttributes = property.GetNullabilityAttributes();

            if (externalAnnotation == null)
            {
                return;
            }

            nullabilityAttributes |= externalAnnotation.GetNullabilityAttributes();
        }
예제 #4
0
    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];
        }
    }