服务层中特定于实现的常量
本文关键字:实现 常量 于实现 服务 | 更新日期: 2023-09-27 18:05:26
我有一个ASP.Net Web Forms项目,它是作为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
的,因此不应该像目前这样真正独立于它。如何向web应用程序公开强类型MemberType
代码,这些代码对于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);
}
}
将"专业"显示为常量或枚举以获得奖励积分。