Неверный атрибут в типе объявления - PullRequest
4 голосов
/ 26 октября 2009

У меня есть следующий код, но я получаю следующие ошибки компиляции:

Атрибут 'WebPartStorage' недопустим в этом типе объявления. Он действителен только для объявлений 'property, indexer'.

И

Атрибут «FriendlyName» недопустим в этом типе объявления. Он действителен только для объявлений 'property, indexer'.

Я изменил свой код из статьи MSDN: http://msdn.microsoft.com/en-us/library/dd584174(office.11).aspx. Кто-нибудь знает, что я делаю неправильно, что вызывает эту ошибку?

  [Category("Custom Properties")]
    [DefaultValue(RegionEnum.None)]
    [WebPartStorage(Storage.Shared)]
    [FriendlyName("Region")]
    [Description("Select a value from the dropdown list.")]
    [Browsable(true)]
    protected RegionEnum _Region;
    public RegionEnum Region
    {
        get
        {
            return _Region;
        }
        set
        {
            _Region = value;
        }
    }

Ответы [ 3 ]

8 голосов
/ 26 октября 2009

Вы, кажется, прикрепили атрибут к полю; атрибуты всегда привязаны к вещи next (в данном случае, к полю). Вам следует изменить порядок, чтобы они придерживались свойства вместо поля.

КСТАТИ; защищенные поля редко бывают полезными (они должны быть частными); но особенно если собственность публичная: какой смысл?

protected RegionEnum _Region;
[Category("Custom Properties")]
[DefaultValue(RegionEnum.None)]
[WebPartStorage(Storage.Shared)]
[FriendlyName("Region")]
[Description("Select a value from the dropdown list.")]
[Browsable(true)]
public RegionEnum Region
{
    get { return _Region; }
    set { _Region = value; }
}
1 голос
/ 26 октября 2009

Сообщение говорит вам, не так ли? Вы пытаетесь установить атрибут в поле, но он действителен только для индексаторов и свойств.

protected RegionEnum _Region;

[Category("Custom Properties")]
[DefaultValue(RegionEnum.None)]
[Description("Select a value from the dropdown list.")]
[Browsable(true)]
[WebPartStorage(Storage.Shared)]
[FriendlyName("Region")]
public RegionEnum Region
{
    get
    {
        return _Region;
    }
    set
    {
        _Region = value;
    }
}
0 голосов
/ 26 октября 2009

Надеюсь, у вас есть using Microsoft.SharePoint.WebPartPages;, не так ли?

...