2

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 を渡すように強制します。

4

2 に答える 2