public PropertyInfo Property(IPropertyDeclaration propertyDeclaration) { if (_propertyCorrespondence.ContainsKey(propertyDeclaration)) { return _propertyCorrespondence[propertyDeclaration]; } var getMethod = propertyDeclaration.GetMethod == null ? null : propertyDeclaration.GetMethod.Resolve(); var setMethod = propertyDeclaration.SetMethod == null ? null : propertyDeclaration.SetMethod.Resolve(); var propertyInfo = new PropertyInfo { Text = propertyDeclaration.ToString(), Name = propertyDeclaration.Name, FullName = propertyDeclaration.Name, IsVirtual = getMethod != null && getMethod.Virtual || setMethod != null && setMethod.Virtual, IsOverride = getMethod != null && getMethod.Virtual && !getMethod.NewSlot || setMethod != null && setMethod.Virtual && !setMethod.NewSlot, IsStatic = getMethod != null && getMethod.Static || setMethod != null && setMethod.Static, IsFinal = getMethod != null && getMethod.Final || setMethod != null && setMethod.Final, MemberReference = propertyDeclaration }; AdjustPropertyVisibility(propertyInfo, propertyDeclaration); _propertyCorrespondence.Add(propertyDeclaration, propertyInfo); propertyInfo.Icon = Images.Images.GetPropertyIcon(propertyInfo); return propertyInfo; }
private void AdjustPropertyVisibility(PropertyInfo propertyInfo, IPropertyDeclaration propertyDeclaration) { var firstAccessor = propertyDeclaration.GetMethod == null ? null : propertyDeclaration.GetMethod.Resolve(); var secondAccessor = propertyDeclaration.SetMethod == null ? null : propertyDeclaration.SetMethod.Resolve(); if (firstAccessor == null) { firstAccessor = secondAccessor; } else if (secondAccessor == null) { secondAccessor = firstAccessor; } if (firstAccessor.Visibility == MethodVisibility.Public || secondAccessor.Visibility == MethodVisibility.Public) { propertyInfo.IsPublic = true; return; } if (firstAccessor.Visibility == MethodVisibility.Family || secondAccessor.Visibility == MethodVisibility.Family) { propertyInfo.IsProtected = true; return; } if (firstAccessor.Visibility == MethodVisibility.FamilyOrAssembly || secondAccessor.Visibility == MethodVisibility.FamilyOrAssembly) { propertyInfo.IsProtectedOrInternal = true; return; } if (firstAccessor.Visibility == MethodVisibility.Assembly || secondAccessor.Visibility == MethodVisibility.Assembly) { propertyInfo.IsInternal = true; return; } if (firstAccessor.Visibility == MethodVisibility.FamilyAndAssembly || secondAccessor.Visibility == MethodVisibility.FamilyAndAssembly) { propertyInfo.IsProtectedAndInternal = true; return; } propertyInfo.IsPrivate = true; }
public PropertyViewModel(PropertyInfo propertyInfo) : base(propertyInfo) { _propertyInfo = propertyInfo; }