使用变量作为类型

时间:2019-06-27 13:11:54

标签: c# android xamarin casting

我可能在这里很密集,但这是我的问题。 我正在写一个应该用来管理物品清单的android应用。 我尝试从一个功能中填充一个布局中的多个Spinner和AutoCompleteTextView对象,而不是每个功能都有一个功能。

这就是我所拥有的... 对象_type应该成为对Sqlite查询的类的引用,以在其中填充数据。我在此示例代码中使用了对象,但是我已将其作为var,object,type来运行。 我这里有几个问题, 1)我得到“ _table”是一个变量,但像类型一样使用 2)当我尝试解析从数据库连接返回的数据时,我遇到了_res的类似问题

本质上,我想做的是使用变量作为类型的占位符。 我试过使用许多强制类型转换和.GetType()之类的函数,但是它们仍然抛出相同的“ x是变量,但像类型一样使用”。 当我在接收数据的列表的上下文中使用它时,我收到消息“列表需要一种类型参数”

目前,我通过对要处理的每个表单项都具有独立的功能来进行此工作,但是这很笨拙,我很乐意将其扩展为适用于从数据库获取数据的所有表单项。 / p>

      public ArrayAdapter<string> PopulateAdapter(Context _c, 
                                                MyDatabase.enTables _which,
                                                MyDatabase.Options _o =null)
            {
                string[] _l;
                SQLiteConnection db = new SQLiteConnection(MyDatabase.GetDBFilePath());
                string _sql;

                Object _table;
                List<_table> _res;

                switch (_which)
                {
                    case GMDatabase.enTables.Manufacturers:
                        _sql = "SELECT * FROM Manufacturers";
                        _table = MyDatabase.Manufacturer;
                        break;
                    case GMDatabase.enTables.Styles:
                        _sql = "SELECT * FROM Styles";
                        _table = MyDatabase.Styles;
                        break;

                }

                _res<_table> = new List<_table>;
                _res = db.Query<_table>(_sql);
                if (_res.Count)
                {
                    for (int i = 0; i < size; i++)
                    {
                        _l[i + 1] = _res[i].Name;
                    }
                    return new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, _l);
                }
                return null;
            }

感谢您的浏览,任何建议或想法都将不胜感激!

0 个答案:

没有答案