在我正在工作的项目中,我们通过他们的网络服务从40多个不同的供应商那里提取一些数据,然后将它们聚合在一起,然后再展示给我们的客每个供应商提供……
你不能用泛型并使用代理对象吗?就像是
public abstract class SupplierBase<TRequest, TResponse> { protected abstract TRequest generateRequest(); protected abstract TResponse sendRequest (TRequest request); protected abstract CommonResponse mapResponse (TResponse request); public CommonResponse process(TRequest request) { return mapResponse(sendRequest(generateRequest())); } } // an implementing class... public class SupplierA:SupplierBase<RequestA, ResponseA> { protected override RequestA generateRequest() { return new RequestA(); } protected override ResponseA sendRequest(RequestA request) { // call with the request and return the specific response } protected override CommonResponse mapResponse(ResponseA request) { // map the specific response to the common response } }
我正在做一个类似的项目。这听起来与你正在做的非常相似。
由于我需要供应商响应的历史记录,因此我让各个供应商类将响应写入数据库(在解析响应的相关部分之后),然后从主线程访问它。