理解全局变量C#

问题描述 投票:0回答:1

我有 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.   ```

c# class global-variables
1个回答
0
投票

错误是不言自明的。您将

Id
定义为项目类的属性,并尝试将其作为方法访问,同时在
MessageBox

中显示它

尝试不带括号,

System.Windows.Forms.MessageBox.Show(projectParamsForm.Project.Id); 
                                            //Removed parenthesis^^
© www.soinside.com 2019 - 2024. All rights reserved.