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 で上記を試したところ、うまくいきませんでした。プロパティがNULLであるとスローしました

[Dependency] の使用方法と、MyClass コードに別の方法があるかどうか、およびそのために「NULL」となる理由を誰か教えてもらえますか?

4

1 に答える 1

0

これは とは関係ありませんDependencyAttribute。後者のケースは、単に自動生成されたプロパティです。この構文を使用したい場合は、コンストラクター内に値を入力する必要があります。

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

    public AnotherClass SomeProperty { get; set; }
}

この場合、ゲッターまたはセッター内でチェックを実行できないことに注意してください。したがって、無効チェックが必要な場合、またはセッター内でイベントを発生させたい場合は、自分でゲッターとセッターを実装する必要があります。

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 に答える