1

すべてのコントローラーで CurrentSettings および CurrentUser クラスが必要なプロジェクトがあります。これらを取得するために静的クラスを使用していましたが、静的クラスを使用するのは悪いため、誰かがラッパークラスを提案しました。

私の問題は、すべてのコントローラーでこれを行う必要があることです:

    #region Fields

    private readonly ProfileService service;
    private readonly Profile currentUser;
    private readonly Settings currentSettings;

    #endregion

    #region Constructors

    public _UsersController()
    {
        var companyWrapper = new CompanyWrapper();
        var profileWrapper = new ProfileWrapper();
        var settingsWrapper = new SettingsWrapper();

        var companyId = companyWrapper.CurrentCompanyId();

        service = new ProfileService(companyId);
        currentUser = profileWrapper.CurrentUser();
        currentSettings = settingsWrapper.CurrentSiteSettings();
    }

    #endregion

悪夢だと思います。確かに、これを行うよりクリーンな方法があります。誰かが私を正しい方向に向けることができれば、私は感謝します.

PS: このプロジェクト内のほとんどすべてにリポジトリ/サービス デザイン パターンを使用します。

乾杯、/r3plica

4

3 に答える 3

2

同じコードを繰り返さずに機能を再利用できるように、継承を使用することを検討しましたか?

たとえば、デフォルトのコンストラクターで必要なクラスをインスタンス化する基本クラスを作成できます。そうすれば、コードを繰り返さずに子クラスからそれらにアクセスできます。

public class UsersController : ControllerBase
{
于 2013-11-05T13:17:32.620 に答える
0

これらのフィールドを持つカスタム コントローラを作成できます。

于 2013-11-05T13:20:56.837 に答える