我有Class library
,其中我必须添加多个Web References
,取决于当前客户。在这个layer
我希望有一个方法,调用Send
并且我希望实现当前的Web References
,取决于当前的客户。 (例如,客户A
有Web References A
,客户B
有Web References B
,等等)
网络参考是第三方
我有一个网络应用程序'我称之为Send
方法。
我需要的是以某种方式编写Send
方法,当我添加新的Web app
时,我不需要在Web References
图层中更改任何内容。 (只需更改Send
方法即可)
我使用ASP.NET Web表单& C#。
答案 0 :(得分:1)
我对我的实现并不完全满意,但这是第一种方法。
基本上,您构建了两个Web引用的包装器,并根据您在Test类中的客户调用正确的引用。
public class WebreferenceAWrapper : IWebReferenceWrapper
{
public string Send(SendParameter param)
{
//Cast AParam and call send method
return "A";
}
}
public class WebreferenceBWrapper : IWebReferenceWrapper
{
public string Send(SendParameter param)
{
//Cast BParam and call send method
return "B";
}
}
public interface IWebReferenceWrapper
{
string Send(SendParameter param);
}
public abstract class SendParameter
{
}
public class AParam : SendParameter
{
public string[] Mobiles { get; set; }
public string[] Messages { get; set; }
}
public class BParam : SendParameter
{
public string Mobiles { get; set; }
public string Messages { get; set; }
}
public class Test
{
public void TestCall()
{
SendParameter sendParameter;
IWebReferenceWrapper wrapper;
//Pseudo
if (Customer == A)
{
sendParameter = new AParam();
wrapper = new WebreferenceAWrapper();
}
else if(Customer == B)
{
sendParameter = new BParam();
wrapper = new WebreferenceBWrapper();
}
}
}