C# 服务层中特定于实现的常量
我有一个ASP.NETWebForms项目,它构建为(除其他外)CRM Web服务的用户界面 我有一个接口,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
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复杂描述符(例如,具有多个维度?)