c#中的依赖属性

时间:2013-03-06 07:38:13

标签: c# asp.net

这是我的代码

private MyClass _someProperty

[Dependency]
public MyClass SomeProperty
{
   get{
        if(_someProperty == null)
              _someProperty = new MyClass()
        return (MyClass)_someProperty
      }
}

这很好用,但我的导演就像“不需要添加”获取“依赖性”属性

我不清楚这个[Dependency]属性。当我查看其他代码时,它被写为

[Dependency]
public AnotherClass MyNewClass
{
    get; set;
}

当我为MyClass尝试上述操作时,它无效。它抛出的属性为NULL

有人可以告诉我[依赖关系]的用途是什么,以及MyClass代码是否有替代方法以及为什么它会以“NULL”形式出现?

1 个答案:

答案 0 :(得分:0)

这与DependencyAttribute无关。后一种情况只是一个自动生成的属性。如果您想使用此语法,则必须在构造函数中填写值。

public class MyClass
{
    public MyClass()
    {
        SomeProperty = new AnotherClass();
    }

    public AnotherClass SomeProperty { get; set; }
}

请注意,在这种情况下,您无法在getter或setter中执行任何检查。因此,如果您需要进行任何无效检查或喜欢在setter中引发事件,则必须自己实现getter和setter。

public class MyClass
{
    private AnotherClass _SomeProperty;

    public MyClass()
    {
        _SomeProperty = new AnotherClass();
    }

    public AnotherClass SomeProperty
    {
        get { return _SomeProperty; }
        set
        {
            if(value == null)
                throw new ArgumentNullException("SomeProperty");

            if(value != _SomeProperty)
            {
                _SomeProperty = value;
                // ToDo: Implement RaiseEvent() and declare event.
                RaiseEvent(MyEvent);
            }       
        }
    }
}