繁体   English   中英

在一行中实例化 object 属性

[英]instantiate object property on get in one line

这是一个出于好奇而不是实际需要的问题,但我认为找出答案会很有趣,因为我的类太深了,我需要 10 行实例化来设置一个属性。

属性 [MyObj3] 在功能上按我的意愿工作,在 get 属性 function 上,它检查 object 是否为 null 并实例化它。 而 [MyObj2] 在尝试引用其属性时将抛出 null 引用异常。

但是,以这种方式制作每一个属性是一个比我想要解决的更大的噩梦。 所以这里的问题是是否有一种简单的内联方式来处理这个问题。 或者我可能没有想到的任何其他方式。

-- 更新:我忘了提,我想保留 object 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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM