类作为枚举(或类似枚举)

时间:2009-12-09 09:04:50

标签: c# web-services

我正在使用第三方Web服务,该服务在其中一个类上公开了一个状态属性,但这个属性实际上是另一个类本身。

虽然这不是很好的震撼,但我正在尝试更容易地为公司中的其他开发人员使用这个Web服务,因为Web服务被抽象出来,我们有自己的适配器类,只暴露我们需要的属性/方法,我一直试图想出一种方法,让我像对待枚举一样处理状态对象

我最想要的是喜欢 object.status = StatusAdapter.<value>

在任何人说“简单地使用枚举”之前我不仅仅使用枚举的原因是Web服务对象所代表的状态数据可以由用户随时添加,这意味着我必须更改类库并重新部署到使用它的所有应用程序。

有什么想法吗?

修改 为了澄清我希望最终开发人员能够按照枚举的方式执行以下操作,当StatusAdapter不是枚举但在运行时动态填充时。

If(foo.Status == StatusAdapter.NotStarted){...}

2 个答案:

答案 0 :(得分:5)

使用界面。那应该可以胜任。

以此为例,

public interface IStatus
{
}

public class SuccessStatus: IStatus
{
}

public class FailStatus: IStatus
{
}

在你班上,你可以这样做:

public class CheckWebService
{
  public IStatus Status
  {get;set;}

}

所以使用你班级的人都可以轻松完成这项工作:

  var checking = new CheckWebService();
   checking.Status=new SuccessStatus();

或定义自己的status继承自IStatus并使用它。

通过这种方式,您无需重新部署代码,但仍然可以让用户定义自己的状态。

答案 1 :(得分:0)

唯一的方法是在StatusAdapter上添加一些StatusAdapter类型的属性,并返回StatusAdapter的不同值