c# - 返回类型为对象的方法

标签 c# oop

我试过这个(https://stackoverflow.com/a/14172067/7482204)方法,但我似乎无法弄清楚如何使用类名作为返回类型调用该方法。

项目.cs:

class Item
{
    public Item GetItem(string parameter) 
    {
        Item itemObj = new Item();

        string query = "select * from items where model = @model";
        try
        {
            using (MySqlConnection connection = Connection.GetConnection()) 
            {
                using (MySqlCommand cmd = new MySqlCommand(query,connection)) 
                {
                    cmd.Parameters.AddWithValue("@model",parameter);
                    using (MySqlDataReader reader = cmd.ExecuteReader()) 
                    {
                        while (reader.Read()) 
                        {
                            itemObj.Id = int.Parse(reader["id"].ToString());
                            itemObj.Model = reader["model"].ToString();
                            itemObj.Brand = reader["brand"].ToString();
                            itemObj.CategoryId = int.Parse(reader["category_id"].ToString());
                            itemObj.SubCategoryId = int.Parse(reader["sub_category_id"].ToString());
                            itemObj.HasSerialNumber = (int.Parse(reader["serialized"].ToString()) == 1 ? true : false);
                        }
                    }
                }
            }
        }
        catch (Exception ex) 
        {
            throw new ArgumentException(ex.Message);
        }
        //Console.WriteLine("End"+itemObj.Model);
        return itemObj;
    }
}

然后我尝试访问方法 GetItem

Item itemObj = GetItem("params");

但我有一个错误“然后名称 GetItem 在当前上下文中不存在”

最佳答案

将 GetItem 更改为静态的,那么您应该可以调用它

Item item = Item.GetItem("params")

相关说明,根据单一职责主体 (SRP),类 Item 不应为其持久性负责。所以你最好把它分成两个类, Item 和 ItemsRepository 或类似的。然后您应该能够创建存储库的实例并在该实例上调用 GetItem(没有 static)

class ItemsRepository
{
    public Item GetItem(string params)
    {
         ....
    }
}


 var repo = new ItemsRepo();
 var item = repo.GetItem("params");

关于c# - 返回类型为对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079950/

相关文章:

c# - Ninject - 绑定(bind)类型列表

C# 任务 - 链接取消 token 不起作用

c++ - OOP:将原始类型传递给需要对象的函数

php - PHP中如何通过一个父类访问多个类

java - 我如何知道是使用数组还是数组列表?

java - 装饰器模式丢失了虚方法查找。有什么好的选择或解决方法吗?

java - 修改匿名类中的外部类属性

c# - 防止 web.config 更改 Web 部署

c# - WPF:与 ContentControl 一起使用时,DataTemplate 中的数据未加载

c# - 使用正在使用的快捷方式 (%PROGRAMFILES%) 启动应用程序