C# 无法调用类的方法c

C# 无法调用类的方法c,c#,methods,C#,Methods,我知道我遗漏了一些明显的东西,但由于某些原因,我无法从类中调用方法。我有一个名为Searches的文件,其中包含一个SearchGroup方法。我试图通过以下方式从另一个文件调用该方法,但它说 “搜索”不包含“搜索组”的定义: 列出人员=搜索。SearchGroupTest; 我的搜索类看起来像: 公共类搜索 { 专用只读IConfiguration\u config; 公共搜索配置 { _配置=配置; } 公共类第一加载组 { 公共int IdGroup{get;set;} 公共字符串名称{g

我知道我遗漏了一些明显的东西,但由于某些原因,我无法从类中调用方法。我有一个名为Searches的文件,其中包含一个SearchGroup方法。我试图通过以下方式从另一个文件调用该方法,但它说

“搜索”不包含“搜索组”的定义:

列出人员=搜索。SearchGroupTest; 我的搜索类看起来像:

公共类搜索 { 专用只读IConfiguration\u config; 公共搜索配置 { _配置=配置; } 公共类第一加载组 { 公共int IdGroup{get;set;} 公共字符串名称{get;set;} } 公共类名称核心 { 公共int Id{get;set;} 公共字符串名称{get;set;} 公共双倍分数{get;set;} } 公共异步任务SearchGroupstring输入 { //加工材料 //查询资料 DataAccess数据=新的DataAccess; 字符串sql=选择IdGroup,从组中选择名称; 列表名称=wait data.LoadDatasql,new{},_config.GetConnectionStringDataDB; //整理和比较资料 返回分类名称; //按匹配分数从低到高的顺序返回姓名列表 } } 尝试使用wait


首先,从搜索中删除这些类通常应避免在其他类中声明类:

public class Searches
{
    private readonly IConfiguration _config;

    public Searches(IConfiguration configuration)
    {
        _config = configuration;
    }
           
    public async Task<List<NameScore>> SearchGroup(string Input)
    {            
       //processy stuff

        //Querying stuff
        DataAccess data = new DataAccess();
        string sql = "SELECT IdGroup, Name FROM Groups";
        List<FirstLoadGroup> Names = await data.LoadData<FirstLoadGroup, dynamic>(sql, new { }, _config.GetConnectionString("DataDB"));

        //Sorting and Comparing stuff
        return SortedNames;

        //return list of names in order of lowest to highest matching score
    }
}

    
    public class FirstLoadGroup
    {
        public int IdGroup { get; set; }
        public string Name { get; set; }
    }
    public class NameScore
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public double Score { get; set; }
    }        
     

…然后Searches.SearchGroup是可以接受的,但事实上C似乎知道什么是搜索,但它没有SearchGroup方法,这意味着您有两个+类称为Searches,它为代码上下文找到的一个类不是使用SearchGroup方法的类。检查您的用法和别名

您只能调用静态方法,而不需要类的任何实例。要调用SearchGroup方法,您可以

让它成为一个静态的方法

公共静态异步任务SearchGroupstring输入

或者创建调用的实例,然后对其调用方法

s=新搜索; 等待s.SearchGroupTest


您是否创建了searches类的实例?在searches类之外声明这两个类。代码中的搜索是实例变量吗?我这样问是因为你的搜索看起来没有大写字母S,这意味着静态访问,但你已经声明你的列表被称为人,所以你似乎不坚持c变量命名约定。我不知道什么是实例变量,也不知道什么是命名约定。\u.我应该等待,但目前这只会增加另一条错误消息,因为它找不到async SearchGroup方法。如果函数不是静态的,则需要初始化类。搜索=新搜索;等待搜索。SearchGroupTest;附言从广义上讲,命名约定—PublicThings、_privateThings、LocalThings感谢响应,但不幸的是,它没有完全起作用,我使用Visual Studio的查找功能查找其他同名类,但它是唯一的一个。我在搜索中添加了一个空构造函数,目前我的错误消息是在s.SearchGroupTest上,说字段初始值设定项不能引用非静态字段、方法或属性“SimilarPeople”。Itellisense中的文件名正在识别SearchOfficer现在存在,尽管该错误与此错误无关,我在发布的代码中看不到任何会抛出它的东西;当您试图在声明时给一个成员一个来自另一个成员的默认值时,就会发生这种错误,即您试图编写类似于类Person的东西{int age=20;string ageString=age.ToString;..-不能保证首先完成age=20,因此在初始化ageString时不能引用age。您需要使用构造函数来排序这些赋值。向搜索中添加空构造函数可能没有帮助;\u配置是SearchGroup需要的,不应该是nullOpps,SearchOfficer是t与SearchGroup相同,我只是更改了名称以使其更一般化。感谢您的建议,此评论已重新发布,并修复了拼写错误。如果搜索必须采用IConfiguration,则构建搜索的对象必须知道它可以提供的配置实例,或者搜索需要由Depender构建知道要提供什么配置的用户,或者必须对SearchGroup进行修改,使其不依赖于_config。不确定SearchOfficer是什么;这是您第一次提到它
public class Searches
{
    private readonly IConfiguration _config;

    public Searches(IConfiguration configuration)
    {
        _config = configuration;
    }
           
    public async Task<List<NameScore>> SearchGroup(string Input)
    {            
       //processy stuff

        //Querying stuff
        DataAccess data = new DataAccess();
        string sql = "SELECT IdGroup, Name FROM Groups";
        List<FirstLoadGroup> Names = await data.LoadData<FirstLoadGroup, dynamic>(sql, new { }, _config.GetConnectionString("DataDB"));

        //Sorting and Comparing stuff
        return SortedNames;

        //return list of names in order of lowest to highest matching score
    }
}

    
    public class FirstLoadGroup
    {
        public int IdGroup { get; set; }
        public string Name { get; set; }
    }
    public class NameScore
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public double Score { get; set; }
    }        
     
Searches s = new Searches(some config)
List<NameScore> people = await s.SearchGroup("Test");
public Searches Searches { get; set; }