gpt4 book ai didi

c# - MVP 中的接口(interface)和类

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:23 25 4
gpt4 key购买 nike

我有以下简单的 Presenter 和 View (MVP) 代码。我无法理解,我们只是将 View 构造函数中的 View (即“this”)传递给演示者实例。但是,在演示者类中,我们有一个接口(interface)作为参数。我注意到,我们在 View 中实现了接口(interface)。但是,当它接受的参数是 Presenter 类构造函数中的接口(interface)时,我不明白我们如何能够传递类(使用“this”查看实例)。

请解释。我有点新。

interface IApplicationConnection
{
string Connect { get; set;}
void SetText(string text);
}

public partial class MyForm : Form, IApplicationConnection
{
private Presenter _presenter;

public MyForm()
{
InitializeComponent();
_presenter = new Presenter(this);
}

public string Connect { get; set; }
}

演示者类:

public class Presenter
{
IApplicationConnection _view;
public Presenter(IApplicationConnection view)
{
_view = view;
}

public void Clicked()
{
_view.SetText("Clicked");
}
}

最佳答案

从您所写的内容来看,您似乎不确定“this”的含义。实际上,在实例(不是静态!)方法中,“this”总是指该方法所属的实例并为其执行。

在您的示例中,“this”指的是 MyView 实例。由于该类实现了您的接口(interface),您可以将其传递给演示者构造函数。

假设您的类实现了三个接口(interface):

public class A : I1, I2, I3 ...

你要把它传递给

public void Foo( I1, I2, I3 )

那么从类中调用 Foo 是合法的

Foo( this, this, this )

由于该类实现了多个接口(interface),所以它可以“摆出”三种不同的接口(interface)规范。

关于c# - MVP 中的接口(interface)和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com