これは研究プロジェクトです。3つのデータベースクラスA、B、Cがあります。作成するクラスのオブジェクトをコンストラクターを介して受け取るファクトリクラスがあります。3つのクラス[A、B、C]のそれぞれには、データベース接続オブジェクトを提供するパラメーターを持つコンストラクターがあります。これは、ファクトリクラスのcreateObjectメソッドで使用しているコードです。
Type classtyp = Type.GetType(className);
Type[] constrParam = new Type[1];
constrParam[0] = typeof(DBConnection);
ConstructorInfo constr = database.GetConstructor(constrParam);
return constr.Invoke(constrParam) as Database;
上記の最後の行はこのエラーを示しています。
「タイプ'System.RuntimeType'のオブジェクトをタイプ'System.Data.Common.DbConnection'に変換できません。」
'System.RuntimeType'はどのようにしてここに到達しましたか?DBconnection型の変数を受け取るコンストラクターを持つクラスAのオブジェクトを作成しようとしています。
現在、クラスAのインスタンスのみを作成するためにファクトリクラスの命令を渡しています。これはクラスAのコードです。
public class SqlServerDB: Database
{
string str = "";
public SqlServerDB(DbConnection DBConn)
: base(DBConn)
{
str = "SQLServer";
}
}
私は何が間違っているのですか?
ありがとう。