質問:コンストラクターのクラスのインスタンスのプロパティとフィールドにデータベースデータを入力したいと思います。
public class Profile : ProfileOverview
{
public Profile()
{ }
public Profile(long ProfileId)
{
using (System.Data.IDbCommand cmd = Settings.DAL.CreateCommand("SELECT * FROM Profiles WHERE ProfileId = @__in_profileid"))
{
Settings.DAL.AddParameter(cmd, "__in_profileid", ProfileId);
this = Settings.DAL.GetClass<Models.Profile>(cmd);
} // End Using cmd
} // End Constructor
... (some properties and fields)
}
問題は、書き込み保護されているため、コンパイラが「this」を割り当てることができないと言っていることです。「this」を渡すためにデータベース抽象化レイヤーを変更する必要があるのでしょうか、それともどうにかしてそれを行うことができますか?
問題は、の新しいインスタンスを作成するためのGetClass
呼び出しです。これをそのままにしておくことをお勧めします(GetClassは関数であり、プロシージャではないため)。Activator.CreateInstance
Models.Profile