当前位置:  开发笔记 > 编程语言 > 正文

在C#中干掉对象实例化

如何解决《在C#中干掉对象实例化》经验,为你挑选了1个好方法。

这段代码:

public class WidgetPlatform
{
    public Widget LeftmostWidget { get; set; }
    public Widget RightmostWidget { get; set; }

    public String GetWidgetNames()
    {
        return LeftmostWidget.Name + " " + RightmostWidget.Name;
    }
}

不包含任何值得担心的重复,但它并不是特别强大.由于Widgets未经过空值检查,我们将留下一个漏洞的开头.我们可以进行空检查,但这感觉就像工作一样.这就是我真正想要的:

public class WidgetPlatform
{
    [Required]
    public Widget LeftmostWidget { get; set; }

    [Required]
    public Widget RightmostWidget { get; set; }

    public String GetWidgetNames()
    {
        return LeftmostWidget.Name + " " + RightmostWidget.Name;
    }
}

理想情况下,如果在没有设置Widgets的情况下实例化对象,则会导致编译错误(最好的错误),但这看起来很高.有没有办法使这种语法至少在实例化时抛出错误?如果所有经过null检查的对象都从相同的类型继承,但没有多次继承会很快变得难看,那么有一种(相对)明显的方法可以使用反射.



1> Eoin Campbel..:

构造函数有什么问题?

public class WidgetPlatform
{
    public Widget LeftmostWidget { get; set; }
    public Widget RightmostWidget { get; set; }

    public WidgetPlatform()
    {
        this.LeftMostWidget = new Widget();
        this.RightMostWidget = new Widget();
    }

    public WidgetPlatform(Widget left, Widget right)
    {
        if(left == null || right == null)
            throw new ArgumentNullException("Eeep!");

        this.LeftMostWidget = left;
        this.RightMostWidget = right;
    }


    public String GetWidgetNames()
    {
        return LeftmostWidget.Name + " " + RightmostWidget.Name;
    }
}

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有