1

ASP.Net Webフォームプロジェクトがあります。これは、(とりわけ)CRMWebサービスへのユーザーインターフェイスとして構築されています。

IMembershipServiceさまざまな種類のサブスクリプションをサービスに購入するためのさまざまな方法を公開するインターフェースがあります。これを具体的に実装するSpecificMemberServiceと、サードパーティのCRMシステムへの多数のWebサービス呼び出しが抽象化されます。

具体的な実装では、特定の4文字の文字列コードとしてさまざまな「サブスクリプションレベル」を渡す必要があります。現在、サービスレイヤーで次のように定義しています。

public static class MemberTypes
{
    public const string Basic = "MEM1";
    public const string Extra = "MEM2";
    public const string Professional = "MEM3";
}

ただし、これらのコードは具象クラスに固有であり、SpecificMemberServiceそのため、現在のように実際にはそれから独立しているべきではありません。強く型付けされたコードをWebアプリケーションに公開するにはどうすればよい ですか?これは、の具体的な実装MemberTypeに関して一定です。IMembershipService

4

1 に答える 1

2

MemberType推論を作成します。GetMemberTypesのコレクションを公開するメソッドをサービスインターフェイスに追加しますIMemberType

public interface IMemberType {      
    public string Name { get; set; } // i.e. "Professional"
    public string Code { get; set; } // i.e. "MEM3"
}

public void ClientCode() {

    // Instantiate a concrete service (calling a factory would be even better).
    IMembershipService service = new MembershipService();

    // Get the list of MemberTypes exposed by the concrete MembershipService.
    Collecton<IMemberTypes> types = service.GetMemberTypes();

    // Subscribe to service defined in IMembershipService with "Professional" level, if possible.
    foreach (IMemeberType type in types) {
        if ((type.Name == "Professional"))
            service.SubscribeToAwesomeService(type.Code);
    }
}

ボーナスポイントの定数または列挙型として「Professional」を公開します。

于 2013-03-21T22:07:10.557 に答える