C# 如何在C中使用接口#
使用C#.NET 4.0,Visual Studio 2010 目前我正在研究类的去耦合和使用接口。 我已经从另一篇文章中实现了一个解决方案,以测试它是否能够正常工作,但不幸的是,我从未使用过接口 以下是我的基本知识: 表格1:C# 如何在C中使用接口#,c#,interface,decoupling,C#,Interface,Decoupling,使用C#.NET 4.0,Visual Studio 2010 目前我正在研究类的去耦合和使用接口。 我已经从另一篇文章中实现了一个解决方案,以测试它是否能够正常工作,但不幸的是,我从未使用过接口 以下是我的基本知识: 表格1: partial class Form1 : InterfacePareto { public string myTest { get { return herpTxt.Text; } set { h
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";
}
}
目的:
目前的计划是从表单文本框中获取文本。然后把它传给工人阶级。然后,工人阶级进行所需的任何计算等,然后将结果传递回表单文本框
我的问题是,我的代码是否正确。如果是,那么我遗漏了什么/做错了什么?或者如果有人认为这不是实现我需要的正确方式,他们有什么建议吗
非常感谢 这应该可以
当MyWorkingOutClass在不同于UI线程的线程上执行其工作时,您会遇到一个问题
要解决此问题,您可能需要将表单上的实现更改为切换到UI线程。我刚刚测试了代码,这对我来说很好:
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";
}
}
看起来不错。在这种情况下,你还有其他问题吗?我要做的就是处理一个按钮事件来启动代码,但是我如何将结果传递回文本框呢?听起来很傻,但我的理解是,除了显示的原始文本之外,不会发生任何事情。设置了myTest属性后,您的文本框应该会更改:)您还没有测试过这个吗?是的,对不起,没有更改,原因是它似乎没有使用接口或工作类。一切对我来说都很好。我将发布代码,代码中只有很少的更改。我要做的就是启动一个按钮事件来启动代码,但是如何将结果传递回文本框?听起来真的很傻,但我的理解是,除了显示原始文本之外,不会发生任何事情@你的答案-在这种情况下,使用任务会比使用新线程更好吗?或者说,线程和任务之间没有什么区别。在C#5中,使用async和await将使编写代码更为简洁。annnnd这就是为什么我没有得到任何结果。。。。。。。我试图调用该方法,但它不存在,我搔搔头,认为有一些神奇的事情发生了,我不明白,所以决定直接从表单调用,ofc这也不起作用,但没有错误。猜猜是什么?一个在测试时间里的私人而不是公共……有时我需要一记耳光。非常感谢您的帮助并向您验证我的代码+1,先生。您刚刚得到一个教训-如果您看不到方法,您要做的第一件事就是检查修饰符。我学会了:)是的,而不是像瓦利一样惊慌失措!非常感谢,我将使用它来运行查询并返回数据集。快速提问,以此为基础,它应该工作?或者在使用数据集时是否有一些小的添加?我的意思是将文本传递给工人阶级,将它们用作sql查询中的参数,进行计算并将日期集返回到我的表单上的datgridview是的,这应该有效。:)只需将数据集合传递给您的工作类,创建参数,执行查询,获取数据并将其设置为接口属性,接口属性将设置为适当的数据网格。