Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务层中特定于实现的常量_C#_Asp.net_Architecture_Interface - Fatal编程技术网

C# 服务层中特定于实现的常量

C# 服务层中特定于实现的常量,c#,asp.net,architecture,interface,C#,Asp.net,Architecture,Interface,我有一个ASP.NETWebForms项目,它构建为(除其他外)CRM Web服务的用户界面 我有一个接口,IMembershipService,它公开了许多购买不同类型服务订阅的方法。具体的实现,SpecificMemberService,将抽象一些对第三方CRM系统的web服务调用 具体的实现要求将不同的“订阅级别”作为特定的4字符字符串代码传递给它。目前,我已在我的服务层中定义了以下内容: public static class MemberTypes { public const

我有一个ASP.NETWebForms项目,它构建为(除其他外)CRM Web服务的用户界面

我有一个接口,
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
的,因此,它们不应该像目前那样真正独立于它。如何将强类型的
MemberType
代码公开给我的web应用程序,这些代码对于
IMembershipService
的具体实现来说是不变的?

创建一个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);
    }
}
公共接口IMemberType{
公共字符串名称{get;set;}//即“Professional”
公共字符串代码{get;set;}//即“MEM3”
}
public void ClientCode(){
//实例化一个具体的服务(调用工厂会更好)。
IMembershipService=new MembershipService();
//获取具体MembershipService公开的成员类型列表。
CollectionTypes=service.GetMemberTypes();
//尽可能以“专业”级别订阅IMembershipService中定义的服务。
foreach(类型中的IMemeberType类型){
如果((type.Name==“Professional”))
service.SubscribeToAwesomeService(type.Code);
}
}

将“Professional”作为常量或枚举公开以获得奖励积分。

我不清楚您的系统和后端系统是否具有相同或不同的成员类型概念?我的意思是,你是否期望其他具体的会员服务会有不同的会员类型代码,或者甚至不同数量的会员类型,或者甚至是会员类型的mmore复杂描述符(例如,具有多个维度?)