2

这是我的代码

private MyClass _someProperty

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

这很好用,但我被指示为“无需为 [Dependency] 添加“get”属性”

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

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

当我为 MyClass 尝试上述方法时,它没有用。它抛出了 Property is NULL

谁能告诉我 [Dependency] 的用途是什么,MyClass 代码是否有另一种方法,为什么它会以“NULL”的形式出现?

4

1 回答 1

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);
            }       
        }
    }
}
于 2013-03-06T07:51:27.617 回答