1

我正在创建一个简单的应用程序,它接受一个 URL 和一个字符串并为超链接创建代码。

这是我的超链接类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

 namespace LinkIt_
{
class HyperLink
{
    private string url;
    private string text;

    public HyperLink()
    {

    }

    public HyperLink(string url,string text)
    {
        this.Website = url;
        this.Text = text;
    }


    public String Website
    {
        get
        {
            return url;
        }
        set
        {
            if (String.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException("Must have URL!");
            }

            this.url = value;
        }


    }

    public String Text
    {

        get
        {
            return text;
        }

        set
        {
            if (String.IsNullOrEmpty(value))
            {
                throw new ArgumentNullException("Must have Text!");
            }
            this.text = value;
        }



    }

    public string addPoint()
    {

        return String.Format("<li><a href=" + "\" {0} \">", url) + text + "</a></li>";  
    }

    public override string ToString()
    {

        return String.Format("<a href=" + "\" {0} \">",url) + text + "</a>" ;   
    }



           }
       }

这是我的表单类

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

 namespace LinkIt_
 {
        public partial class Form1 : Form
{


    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        HyperLink link;
            try
            {

                if (chkPoint.Checked)
                {

                    txtDisplay.Text = "";
                    link = new HyperLink(txtLink.Text, txtText.Text);
                    txtDisplay.Text = link.addPoint();


                }
                else
                {
                    txtDisplay.Text = "";
                    link = new HyperLink(txtLink.Text, txtText.Text);
                    txtDisplay.Text = link.ToString();

                }



            }


            catch (ArgumentNullException msg)
            {
                MessageBox.Show(msg.Message);
            }





   }




    private void btnClear_Click(object sender, EventArgs e)
    {
        txtDisplay.Text = "";
        txtLink.Text = "";
        txtText.Text = "";
    }
}
 }

我的问题:

  1. 如何确保不创建部分初始化的对象?

  2. 如果我的代码需要更正,有人可以帮助我吗?

4

1 回答 1

2

您可以重构代码以使用访问器可见性降低的属性。这样,HyperLink就不能从类外部更改对象(这通常是数据结构的首选属性)。

例如,您可以执行以下操作:

class HyperLink
{
    public String Website{get; private set;}

    public String Text {get; private set;}

    public HyperLink(string url,string text)
    {
        if(string.isNullOrEmpty(url) || string.IsNullOrEmpty(text))
          throw new ArgumentNullException("no partially intialized object allowed");

        this.Website = url;
        this.Text = text;
    }

    public string AddPoint()
    {
        return String.Format("<li><a href=" + "\" {0} \">", url) + text + "</a></li>";  
    }

    public override string ToString()
    {
        return String.Format("<a href=" + "\" {0} \">",url) + text + "</a>" ;   
    }
}

更新以回答评论中的问题

是的,在同一个对象或类中使用 Getter/Setter 是完全合理的。但是,我建议您改进String.Format以下内容的使用:

String.Format("<a href=\"{0}\">{1}</a>",this.Link, this.Text);
于 2012-11-29T04:51:12.137 回答