C#

时间:2016-04-04 05:13:31

标签: c# asp.net interface

我有Class library,其中我必须添加多个Web References,取决于当前客户。在这个layer我希望有一个方法,调用Send并且我希望实现当前的Web References,取决于当前的客户。 (例如,客户AWeb References A,客户BWeb References B,等等)

网络参考是第三方

我有一个网络应用程序'我称之为Send方法。

我需要的是以某种方式编写Send方法,当我添加新的Web app时,我不需要在Web References图层中更改任何内容。 (只需更改Send方法即可)

我使用ASP.NET Web表单& C#。

1 个答案:

答案 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();
        }
    }
}