«Атрибут« Зависимость »недопустим в этом типе объявления». ошибка - PullRequest
7 голосов
/ 20 ноября 2011

Почему я получаю такое сообщение?

Атрибут 'Зависимость' недопустим для этого типа объявления.Он действителен только для объявлений «сборки».

public partial class MainWindow : Window
{
    private OverviewViewModel _vm;

    [Dependency]
    public OverviewViewModel VM
    {
        set
        {
            _vm = value;
            this.DataContext = _vm;
        }
    }

Ответы [ 3 ]

6 голосов
/ 20 ноября 2011

Возможно, вы используете неправильный атрибут: DependencyAttribute

Указывает, когда зависимость должна быть загружена ссылающейся сборкой [...]

и может применяться только к сборкам (а не к таким свойствам, как вы пытаетесь), например ::10000

[assembly: Dependency(/*...*/)]
5 голосов
/ 20 ноября 2011

Атрибутам разрешено указывать, к чему они могут применяться (через AttributeUsageAttribute).По умолчанию это что угодно , но в данном случае это «сборка», что означает: вы можете применить это только на уровне сборки, что вы делаете через:

[assembly:Dependency(...)]

Если этосвой собственный атрибут, проверьте атрибут AttributeUsageAttribute, связанный с ним, и убедитесь, что он включает в себя свойства (используя канал | для применения "или").

Если это не ваш атрибут, дважды проверьте предполагаемое использование -Вы можете использовать это неправильно.

0 голосов
/ 08 июля 2014

Попробуйте включить геттер: </p> <pre><code>private OverviewViewModel _vm; [Dependency] public OverviewViewModel VM { set { _vm = value; this.DataContext = _vm; } get { return _vm; } }

...