-2

Format1 クラスには 9 つの文字列があり、Format2 クラスに見られるように異なる型に変換したいのですが、3 つの文字列は文字列型として残ります。満足のいくコードが得られるまで、それらを試してみることにしました。

Form1.cs コードでわかるように、ボタン クリック イベントで実際にやりたいことは、getConvert() メソッドを呼び出してすべてを処理させることだけです。どうやら私は何かを見逃しています。すべてを呼び出すには、醜い 6 行を使用する必要があります。

コード内のコメントに、動作していない試行が表示されます。今回は何を間違えましたか??

ここで私のソースを取得することもできます: https://mega.co.nz/#!64QzERRR!Qit9SDZQ7kW7rNCAUUHHDRZUUvZY9z0ukgfuqVt00mE

public class Format1
    {
        public string Name { get; set; }
        public string Year { get; set; }
        public string Director { get; set; }
        public string AverageRating { get; set; }
        public string LeadingActor1 { get; set; }
        public string LeadingActor2 { get; set; }
        public string LeadingActor3 { get; set; }
        public string Language { get; set; }
        public string ImdbLink { get; set; }


    }



public class Format2 : Format1
    {
        public int Year { get; set; }
        public int AverageRating {get; set;}
        public string LeadingActors { get; set; }
        public bool IsInEnglish { get; set; }
        public bool HasImdbLink { get; set; }


        public Format2 getConvert()
        {

            Format2 converted = new Format2();




        //converted.Name = textBox1.Text;
        //textBox18.Text = converted.Name;

            converted.Name = this.Name;
            converted.Director = this.Director;
            converted.ImdbLink = this.ImdbLink;

            return converted;
        }
    }





namespace as3_DVDproject
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        Format2 converted = new Format2();

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label8_Click(object sender, EventArgs e)
        {

        }

        private void label9_Click(object sender, EventArgs e)
        {

        }

        private void okButton_Click(object sender, EventArgs e)
        {
            //converted.getConvert();

            converted.Name = textBox1.Text;
            textBox18.Text = converted.Name;

            converted.Director = textBox3.Text;
            textBox16.Text = converted.Director;

            converted.ImdbLink = textBox9.Text;
            textBox10.Text = converted.ImdbLink;

        }
    }
}
4

2 に答える 2

1

よりオブジェクト指向のパターンは、Format1 を受け取るコンストラクターを Format2 に追加するか、Format1 を受け取って Format2 を返す静的メソッドを Format2 に与えることです。実際のマッピング コードはそれほど冗長に見えませんが、これらの場所のいずれかにドロップできます。

private void okButton_Click(object sender, EventArgs e)
{
    Format1 one = new Format1(textBox1.Text, converted.Name, textBox3.Text, converted.Director);
    Format2 two = new Format2(one);
}

オブジェクトをフォームで構築するのではなく、オブジェクト自体を構築する方法をオブジェクトに認識させます。

于 2013-01-23T17:30:24.047 に答える
1

テキストボックスがそのクラスで宣言されていないため、converted.Name の値を TextBox1 に割り当てたり、TextBox18 を使用してその逆を割り当てたりする試み (これについては問題だと思います) が失敗する限り、それらは Form1 クラスで宣言されます。クラス Format2 にはアクセスできません。

于 2013-01-23T17:39:52.283 に答える