我对 Visual Studio 中的 C# 相对缺乏经验。我创建了一个名为 Visitor 的类,我希望跟踪能够以不同的形式访问这些访问者。这样做的最好方法是什么。我想到有一个 Visitor 类,它是一个可以访问的列表。但是,我似乎无法找到一种方法来做到这一点。我收到以下错误
Error CS1955 Non-invocable member 'Visitors' cannot be used like a method.
他是我的访客班级的代码...
namespace VisitorSignInSystem
{
public class Visitors
{
List<Visitor> current { get; set; }
public Visitors()
{
current = new List<Visitor>();
}
public Visitors(Visitor v) {
current.Add(v);
}
}
}
我在第一个表格上初始化列表....
public Form1()
{
InitializeComponent();
Visitors();
}
并尝试以不同的形式将某些内容添加到列表中......
public VisitorSignInWelcome(Visitor v)
{
InitializeComponent();
Visitors(v);
}
非常感谢任何帮助或正确执行此操作的路标。
首先,让我们稍微清理一下你的班级:
public class Visitors
{
private List<Visitor> current = new List<Visitor>();
public Visitors(){}
public Visitors(Visitor v) => current.Add(v);
}
这可确保始终创建当前列表。请注意,如果没有额外的方法或属性,这样的类没有多大意义,我假设这些已经被brewity 省略了。还可以考虑完全删除
Visitors
类,并仅使用 List<Visitor>
来表示多个访问者。
接下来,让我们从我们的类中实际创建一个对象并将其分配给一个字段:
private Visitors visitors;
public Form1()
{
InitializeComponent();
visitors = new Visitors();
}
对于最后一部分,让我们在另一个表单之间共享相同的对象:
private Visitors visitors;
public Form2(Visitors visitors){
InitializeComponent();
this.visitors = visitors;
}
....
// in form1
public void ShowForm2(){
var form2 = new Form2(visitors);
form2.Show();
}
请注意,这只是一个非常简单的基础示例。一旦你开始真正让 UI 变得更高级,复杂性就会大大增加。例如,如果 Form2 对访问者进行更改,它可能需要通知 Form1,以便它可以自行更新,以便用户可以看到更改。
您还可以考虑是否有比“Visitor”更好的术语,因为它可能与访问者模式混淆,至少当我看到名为“Visitor”的类时我是这么想的。