Telerik OpenAccess ORM ライブラリのコード生成テンプレートの 1 つをカスタマイズしています。ビジネス ルールにより、データベースに接続するためのユーザー名とパスワードを暗号化された文字列として構成ファイルに入れる必要があります。私にはこの要件に対する権限がないため、回避することはできません。
私が行ったことは、復号化された資格情報を提供するシングルトン クラスを作成し、それを使用するようにコード生成テンプレートを変更することです。ここに私が変更しているテンプレートの一部があります:
public <#= contextClass.Name #>()
:base(connectionStringName, backend, metadataSource)
{
Credentials credentials = Credentials.Instance;
string connectionString = String.Format("DATA SOURCE={0};PASSWORD={1};PERSIST SECURITY INFO=True;USER ID={2}",
credentials.DatabaseServer,
credentials.DatabasePassword,
credentials.DatabaseUser);
}
public <#= contextClass.Name #>(string connection)
:base(connection, backend, metadataSource)
{ }
public <#= contextClass.Name #>(BackendConfiguration backendConfiguration)
:base(connectionStringName, backendConfiguration, metadataSource)
{ }
//More constructors.....
すべてのテンプレートは、本体内にコードを持たないコンストラクターを生成します。私が望むのは、接続文字列を作成し、それを基本クラス ( OpenAccessContext
) のコンストラクターに使用することです。変更したパラメーターなしのコンストラクターからわかるように、これをデフォルトのコンストラクターにしたいと思います-public <#= contextClass.Name #>()
私が困惑したのは、この文字列を作成し、基本クラスのコンストラクターで使用する方法です。何か案は?