如何将不同的参数传递给实现相同接口的不同http请求类
How to pass different parameters to different http request classes that implement the same interface
我正在开发一个 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,等等
因为我可能是唯一一个接触这段代码的人,所以它可能不会在很长一段时间内造成问题 运行,但如果存在更好的解决方案,我仍然希望使用。
你能做到以下几点吗:
public class GetItemPriceRequest: IRequest
{
public string ItemNumber {set;get;}
public string UserName {set;get;}
}
public GetItemHistoryRequest: IRequest
{
// my properties
}
等等每个请求。并对每个请求做出响应 class。这种方式更干净,更有条理。此外,您知道根据请求对象类型期望的参数。意思是,如果传递的请求对象是 GetItemPriceRequest
类型;然后我应该看到 ItemNumber
字段。
希望能帮助您解决问题。如果您有问题,请告诉我。
作为补充,您会发现 Command design pattern 很有帮助 - 它将命令请求封装为一个对象。此外,您还可以使用不同的请求、队列或日志请求对客户端进行参数化,并支持可撤销的操作。
以及如何
to do various HTTP request to get different kinds of information
可以帮到你ParameterObject - it deals with a chain of calls (more details here).
我正在开发一个 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,等等
因为我可能是唯一一个接触这段代码的人,所以它可能不会在很长一段时间内造成问题 运行,但如果存在更好的解决方案,我仍然希望使用。
你能做到以下几点吗:
public class GetItemPriceRequest: IRequest
{
public string ItemNumber {set;get;}
public string UserName {set;get;}
}
public GetItemHistoryRequest: IRequest
{
// my properties
}
等等每个请求。并对每个请求做出响应 class。这种方式更干净,更有条理。此外,您知道根据请求对象类型期望的参数。意思是,如果传递的请求对象是 GetItemPriceRequest
类型;然后我应该看到 ItemNumber
字段。
希望能帮助您解决问题。如果您有问题,请告诉我。
作为补充,您会发现 Command design pattern 很有帮助 - 它将命令请求封装为一个对象。此外,您还可以使用不同的请求、队列或日志请求对客户端进行参数化,并支持可撤销的操作。
以及如何
to do various HTTP request to get different kinds of information
可以帮到你ParameterObject - it deals with a chain of calls (more details here).