如何将不同的参数传递给实现相同接口的不同http请求类

本文关键字:接口 http 请求 参数传递 实现 | 更新日期: 2024-10-21 03:33:09

我正在开发一个C#程序,该程序必须执行各种HTTP请求才能获得不同类型的信息(一个地区中特定商品的价格、商品价格的历史记录、两个地区之间的路线等)。

我首先实现了一个IRequest接口,该接口包含所有请求都必须具有的两个属性:

public interface IRequest
{
    ReturnDataType DataReturnType { get; }
    HttpWebRequest HttpRequest { get; }
}
public enum ReturnDataType
{
    Xml,
    Json
};

我想在该接口中添加一个列表(或任何其他容器),其中包含请求的参数(将添加到URL中),这样我就可以通过引用IRequest接口来访问它们。不幸的是,由于每个http请求不一定都有相同的请求,如果有,也不一定按照相同的顺序,我不知道如何实现这一点。我想到的唯一解决方案是在接口中有一个List<String>,并依靠程序员读取参数x在http请求a的列表中总是第一个,参数y第二个,等等,参数z在http请求b的列表中始终第一个,等等。

由于我可能是唯一一个接触这段代码的人,从长远来看,它可能不会造成问题,但如果存在更好的解决方案,我还是希望使用它。

如何将不同的参数传递给实现相同接口的不同http请求类

你能做以下事情吗:

public class GetItemPriceRequest: IRequest
{
        public string ItemNumber {set;get;}
        public string UserName {set;get;}
}
public GetItemHistoryRequest: IRequest
{
        // my properties
}

等等。并为每个请求提供一个响应类。这样更干净、更有条理。此外,您还知道根据请求对象类型需要什么参数。这意味着,如果传递的请求对象的类型为GetItemPriceRequest;那么我应该看到CCD_ 3字段。

我希望这将帮助你解决你的问题。如果你有问题,请告诉我。

此外,Command设计模式也很有用,它将命令请求封装为对象。此外,还允许您参数化具有不同请求的客户端、队列或日志请求,并支持可撤消的操作。

进行各种HTTP请求以获得不同类型的信息

可以帮助您ParameterObject-它处理一系列调用(此处提供更多详细信息)。