2

使用 C# .NET 4.0、Visual Studio 2010。

好吧,目前我正在研究类的解耦和使用接口。我已经从另一篇文章中实现了一个解决方案来测试我是否可以让它工作,但不幸的是我从来没有使用过接口。

所以这是我所拥有的基础知识:

表格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 线程不同的线程上工作时,您会遇到一个问题。

要解决这个问题,您可能需要更改表单上的实现以切换到 UI 线程。

于 2012-08-21T10:17:06.220 回答