Пример #1
0
        private SourcePropertySymbol(
            SourceMemberContainerTypeSymbol containingType,
            BasePropertyDeclarationSyntax syntax,
            bool hasGetAccessor,
            bool hasSetAccessor,
            bool isExplicitInterfaceImplementation,
            TypeSymbol?explicitInterfaceType,
            string?aliasQualifierOpt,
            DeclarationModifiers modifiers,
            bool isAutoProperty,
            bool isExpressionBodied,
            bool isInitOnly,
            string memberName,
            Location location,
            BindingDiagnosticBag diagnostics
            )
            : base(
                containingType,
                syntax,
                hasGetAccessor,
                hasSetAccessor,
                isExplicitInterfaceImplementation,
                explicitInterfaceType,
                aliasQualifierOpt,
                modifiers,
                hasInitializer: HasInitializer(syntax),
                isAutoProperty: isAutoProperty,
                isExpressionBodied: isExpressionBodied,
                isInitOnly: isInitOnly,
                syntax.Type.GetRefKind(),
                memberName,
                syntax.AttributeLists,
                location,
                diagnostics
                )
        {
            if (IsAutoProperty)
            {
                Binder.CheckFeatureAvailability(
                    syntax,
                    (hasGetAccessor && !hasSetAccessor)
                      ? MessageID.IDS_FeatureReadonlyAutoImplementedProperties
                      : MessageID.IDS_FeatureAutoImplementedProperties,
                    diagnostics,
                    location
                    );
            }

            CheckForBlockAndExpressionBody(
                syntax.AccessorList,
                syntax.GetExpressionBodySyntax(),
                syntax,
                diagnostics
                );
        }