示例#1
0
        public static MethodReader CreateAccessorMethodReader(CodeModelBuilder modelBuilder, IMethodSymbol accessorSymbol)
        {
            if (accessorSymbol != null)
            {
                var reader = new MethodReader(modelBuilder, accessorSymbol);
                reader.ReadDeclaration();
                return(reader);
            }

            return(null);
        }
示例#2
0
        public void ReadDeclaration()
        {
            _adderReader   = MethodReaderMechanism.CreateAccessorMethodReader(_modelBuilder, _symbol.AddMethod);
            _removerReader = MethodReaderMechanism.CreateAccessorMethodReader(_modelBuilder, _symbol.RemoveMethod);

            _member = new EventMember {
                Name          = _symbol.Name,
                DeclaringType = _modelBuilder.TryGetMember <TypeMember>(_symbol.ContainingType),
                Status        = MemberStatus.Incomplete,
                Visibility    = _symbol.GetMemberVisibility(),
                Modifier      = _symbol.GetMemberModifier(),
                DelegateType  = _modelBuilder.TryGetMember <TypeMember>(_symbol.Type),
            };
        }
示例#3
0
        public void ReadDeclaration()
        {
            _getterReader = MethodReaderMechanism.CreateAccessorMethodReader(_modelBuilder, _symbol.GetMethod);
            _setterReader = MethodReaderMechanism.CreateAccessorMethodReader(_modelBuilder, _symbol.SetMethod);

            _member = new PropertyMember {
                Name          = _symbol.Name,
                DeclaringType = _modelBuilder.TryGetMember <TypeMember>(_symbol.ContainingType),
                Status        = MemberStatus.Incomplete,
                Visibility    = _symbol.GetMemberVisibility(),
                Modifier      = _symbol.GetMemberModifier(),
                PropertyType  = _modelBuilder.TryGetMember <TypeMember>(_symbol.Type),
                Getter        = _getterReader?.Member as MethodMember,
                Setter        = _setterReader?.Member as MethodMember
            };
        }