Example #1
0
        public static DynamicallyAccessedMemberTypes GetMethodParameterAnnotation(IParameterSymbol parameter)
        {
            var damt = parameter.GetDynamicallyAccessedMemberTypes();

            // Is this a property setter parameter?
            var parameterMethod = (IMethodSymbol)parameter.ContainingSymbol;

            Debug.Assert(parameterMethod != null);
            // If there are conflicts between the setter and the property annotation,
            // the setter annotation wins. (But DAMT.None is ignored)
            if (parameterMethod !.MethodKind == MethodKind.PropertySet && damt == DynamicallyAccessedMemberTypes.None)
            {
                var property = (IPropertySymbol)parameterMethod.AssociatedSymbol !;
                Debug.Assert(property != null);
                damt = property !.GetDynamicallyAccessedMemberTypes();
            }

            return(damt);
        }