2

C#.NET 4.0、VisualStudio2010を使用します。

さて、現時点では、クラスの分離とインターフェースの使用を検討しています。別の投稿からソリューションを実装して、それが機能するかどうかをテストしましたが、残念ながら、インターフェイスを使用したことはありません。

これが私が持っているものの基本です:

フォーム1:

partial class Form1 : InterfacePareto
{
    public string myTest
        {
            get { return herpTxt.Text; }
            set { herpTxt.Text = value; }
        }  
} 

インターフェース:

interface InterfacePareto
{
    string myTest { get; set; }
}

MyWorkingOutClass:

Class MyWorkingOutClass
{
    private readonly InterfacePareto pare;

    public MyWorkingOutClass(InterfacePareto pare)
    {
        this.pare = pare;
    }

    private void Testtime()
    {
        string firstName = pare.myTest;
        pare.myTest = firstName + " extra";
    }
}

目的:

現時点での計画は、フォームのテキストボックスからテキストを取得することです。次に、それを労働者階級に渡します。次に、労働者階級は必要な計算などを行い、その結果をフォームのテキストボックスに返します。

私の質問は、正しい軌道に沿った私のコードです。はいの場合、私は何が欠けている/間違っているのですか?または、これが私が必要とすることを達成するための正しい方法ではないと誰かが考える場合、彼らは何か提案がありますか?

どうもありがとう!

4

2 に答える 2

2

コードをテストしたところ、これは問題なく機能します。

public partial class MainForm :Form, InterfacePareto //My main form inheriting Form class and interface
{
    public MainForm()
    {
        InitializeComponent();
    }

    public string myTest
    {
        get { return herpTxt.Text; }
        set { herpTxt.Text = value; }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //On button click create MyWorkingOutClass instance and pass MainForms instance
        MyWorkingOutClass mc = new MyWorkingOutClass(this); 
        //After this line text box content will change
        mc.Testtime();
    }
}

//Changed modifier to public
public interface InterfacePareto
{
    string myTest { get; set; }
}

//Changed modifier to public
public class MyWorkingOutClass
{
    private readonly InterfacePareto pare;

    public MyWorkingOutClass(InterfacePareto pare)
    {
        this.pare = pare;
    }

    //Changed modifier to public
    public void Testtime()
    {
        string firstName = pare.myTest;
        pare.myTest = firstName + " extra";
    }
}
于 2012-08-21T10:40:24.510 に答える
1

これは正常に機能するはずです。

MyWorkingOutClassがUIスレッドとは異なるスレッドで動作する場合に発生する問題が1つあります。

これを解決するには、フォームの実装を変更してUIスレッドに切り替えることをお勧めします。

于 2012-08-21T10:17:06.220 に答える