私はC#が初めてで、すべてに苦労しています。助けてください。これが私がやろうとしていることです:
クエリ対象のテーブルに応じて、クラスのインスタンスを含む動的リストを返すデータベース クラスを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
Class MYDatabase{
public void main ()
{
String QueryString="select COLUMN_NAME, DATA_TYPE from information_schema.columns where table_name = 'mytable'";
Object MyData=GetRsults(QueryString,"SchemaStructure");
}
public static Object GetResults(string QueryString, String ClassName)
{
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = QueryString;
cmd.CommandType = CommandType.Text;
//assuming I already defined my connection
cmd.Connection = Connection;
Connection.Open();
reader = cmd.ExecuteReader();
Type ClassType = Type.GetType(ClassName);
Type ListType = typeof(List<>).MakeGenericType(new Type[] { ClassType });
Object Results = Activator.CreateInstance(ListType);
Object SingleResult = Activator.CreateInstance(ClassType);
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
var PropName= SingleResult.GetType().GetProperty(reader.GetName(i).ToString());
//Convert.ChangeType(value, propertyInfo.PropertyType)
PropName.SetValue(PropName,reader.GetValue(i).ToString(),null);
}
Results.Add(SingleResult);
}
Connection.Close();
return Results;
}
}
class SchemaStructure
{
public string COLUMN_NAME { set; get; }
public string DATA_TYPE { set; get; }
}
これは機能していませResults.Add(SingleResult);
ん。行にメッセージが表示されます
'object' には 'Add' の定義が含まれておらず、'object' 型の最初の引数を受け入れる拡張メソッド 'Add' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
誰でもこのコードを解決するのを手伝ってもらえますか?
私のアプローチがまったく意味をなさない場合は、他の提案を受け入れます。
ありがとう