如何解决在一行中实例化对象属性
这是一个出于好奇而不是实际需要的问题,但我认为找出答案会很有趣,因为我的类太深了,我需要 10 行实例化来设置单个属性。
属性 [MyObj3] 在功能上按我的意愿工作,在 get 属性函数中,它检查对象是否为 null 并实例化它。而 [MyObj2] 在尝试引用其属性时会抛出空引用异常。
但是以这种方式制作每一个属性是一个比我想要解决的更大的噩梦。所以这里的问题是是否有一种简单的内联方式来处理这个问题。或者我可能没有想到的任何其他方式。
-- 更新:我忘了提到,我想在需要之前将对象保持为 null,否则它会包含在 xml 序列化中。
public class Obj1
{
public Obj2 MyObj2 { get; set; }
private Obj3 _obj3;
public Obj3 MyObj3
{
get => _obj3 == null ? _obj3 = new Obj3() : _obj3;
set => _obj3 = value;
}
}
public class Obj2
{
public string MyProp1 { get; set; }
}
public class Obj3
{
public string MyProp1 { get; set; }
}
public void test()
{
var obj = new Obj1();
obj.MyObj2.MyProp1 = "test";//null exception
obj.MyObj3.MyProp1 = "test";//works fine
}
解决方法
当你像这样实例化Obj1时,你可以实例化Obj2和Obj3
public class Obj1
{
public Obj2 MyObj2 { get; set; } = new Obj2();
public Obj3 MyObj3 { get; set; } = new Obj3();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。