我正在使用第三方Web服务,该服务在其中一个类上公开了一个状态属性,但这个属性实际上是另一个类本身。
虽然这不是很好的震撼,但我正在尝试更容易地为公司中的其他开发人员使用这个Web服务,因为Web服务被抽象出来,我们有自己的适配器类,只暴露我们需要的属性/方法,我一直试图想出一种方法,让我像对待枚举一样处理状态对象
我最想要的是喜欢 object.status = StatusAdapter.<value>
在任何人说“简单地使用枚举”之前我不仅仅使用枚举的原因是Web服务对象所代表的状态数据可以由用户随时添加,这意味着我必须更改类库并重新部署到使用它的所有应用程序。
有什么想法吗?
修改 为了澄清我希望最终开发人员能够按照枚举的方式执行以下操作,当StatusAdapter不是枚举但在运行时动态填充时。
If(foo.Status == StatusAdapter.NotStarted){...}
答案 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
的不同值