这是我的代码
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”形式出现?
答案 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);
}
}
}
}