我有 wpf 形式的这 3 个类:
public class Project
{
public int Id { get; set; }
public string Name { get; set; }
public List<Technique> Techniques { get; set; }
}
public class Technique
{
public int TecniqueId { get; set; }
public int ProjectId { get; set; }
public string Name { get; set; }
public List<TechniqueParam> TechniqueParams { get; set; }
}
public class TechniqueParam
{
public int TechniqueId { get; set; }
public int ParameterId { get; set; }
public string ParamName { get; set; }
public string ParamValue { get; set; }
}
还有这个功能
public List<Project> GetProjects()
{
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
var projects = connection.Query<Project>("SELECT * FROM projects").AsList();
foreach (var project in projects)
{
var techniques = connection.Query<Technique>(
"SELECT * FROM tecniques WHERE projectID = @ProjectId",
new { ProjectId = project.Id }).AsList();
foreach (var technique in techniques)
{
var techniqueParams = connection.Query<TechniqueParam>(
"SELECT * FROM tecniqueParams WHERE tecniqueID = @TecniqueId",
new { TecniqueId = technique.TecniqueId }).AsList();
technique.TechniqueParams = techniqueParams;
}
project.Techniques = techniques;
}
return projects;
}
}
该函数在表单加载事件中被调用
private void Window_Loaded(object sender, RoutedEventArgs e)
{
GetProjects();
}
根据我的理解,当加载表单时,会调用函数,并使用变量名称项目创建 3 个类的实例,并且值由 Dapper 映射到相应的字段内。
一切正常。但如果我关闭表单并返回 MainForm,我应该能够访问类属性。这就是我被困住的地方。如果从 MainForm 我调用 Project 类
System.Windows.Forms.MessageBox.Show(projectParamsForm.Project.Id());
我有这个错误
Error CS1955 Non-invocable member 'projectParamsForm.Project.Id' cannot be used like a method. ```
错误是不言自明的。您将
Id
定义为项目类的属性,并尝试将其作为方法访问,同时在 MessageBox
、 中显示它
尝试不带括号,
System.Windows.Forms.MessageBox.Show(projectParamsForm.Project.Id);
//Removed parenthesis^^