예제 #1
0
            private bool IsViableFieldOrProperty(
                ITypeSymbol parameterType,
                ISymbol symbol)
            {
                if (symbol != null && !symbol.IsStatic && parameterType.Language == symbol.Language)
                {
                    if (symbol is IFieldSymbol field)
                    {
                        return
                            (!field.IsReadOnly &&
                             _service.IsConversionImplicit(_semanticDocument.SemanticModel.Compilation, parameterType, field.Type));
                    }
                    else if (symbol is IPropertySymbol property)
                    {
                        return
                            (property.Parameters.Length == 0 &&
                             property.SetMethod != null &&
                             IsSymbolAccessible(property.SetMethod) &&
                             _service.IsConversionImplicit(_semanticDocument.SemanticModel.Compilation, parameterType, property.Type));
                    }
                }

                return(false);
            }