asp.net アプリケーションのObjectDataSource内で使用されるいくつかのメソッドを公開するサービス レイヤーがあります。
サービス クラスのコンストラクターには、現在ログインしているユーザーを追跡するために使用される単なる int のパラメーターがあります。
public ProjectService(int userId)
{
_userId = userId;
pb = new ProjectBusiness(_userId);
}
ただし、私のサービスはパラメーターなしで正常に機能していました。追加したので、次のようにヒットします:
このオブジェクトにはパラメーターなしのコンストラクターが定義されていません。
このパラメータを objectdatasource からサービス層に渡す方法はありますか? または、現在 Session[] に格納されている UserID を知っているサービス (およびビジネス層とデータ層) を処理するためのより良い方法があるでしょうか?
私が見つけた回避策は、コードでパラメーターを宣言することです。
protected void ChargeRatesODS_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
var service = new ResourceService(Common.CurrentUserId());
e.ObjectInstance = service;
}
これが唯一の方法であり、ベスト プラクティスなのですか? コンストラクターにパラメーターを持たせて、主にロギングとロール管理の理由で、開発者に有効な UserID を渡すように強制します。