“属性'依赖关系'在此声明类型上无效。”错误

时间:2011-11-20 18:22:43

标签: c# wpf mvvm unity-container

为什么我收到这样的消息?

属性'依赖关系'在此声明类型上无效。它仅对'assembly'声明有效。

public partial class MainWindow : Window
{
    private OverviewViewModel _vm;

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

3 个答案:

答案 0 :(得分:6)

您可能使用了错误的属性:DependencyAttribute

  

指示引用程序集[...]

何时加载依赖项

并且只能应用于程序集(而不能应用于您正在尝试的属性),例如:

[assembly: Dependency(/*...*/)]

答案 1 :(得分:5)

允许属性声明它们可以应用的内容(通过AttributeUsageAttribute)。默认值是任何,但在这种情况下它是“assembly”,这意味着:您只能在汇编级别应用它,您可以通过以下方式执行此操作:

[assembly:Dependency(...)]

如果这是您自己的属性,请检查与其关联的AttributeUsageAttribute,并确保它包含属性(使用管道|来应用“或”)。

如果它不是您的属性,请仔细检查预期用途 - 您可能使用错误。

答案 2 :(得分:0)

尝试添加getter:

private OverviewViewModel _vm;

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

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