C#

2016-04-04 8 views
-8

'da bir yöntemin çok amaçlı kullanımı Class library var ve bunun içinde birden fazla Web References ekleyerek mevcut müşteriye bağlıyım. Bu layer içinde Send numaralı telefonu aramak ve geçerli Web References'u uygulamak istediğimde, geçerli müşteriye bağlı olmak istiyorum.C#

Web Referansları Bir 'Web uygulaması' olan ve bu ben o Send yöntemi diyoruz üçüncü şahıs

vardır (ex. Müşteri A vb müşteri BWeb References B sahiptir, Web References A vardır ve).

Tek ihtiyacım olan şey, Web References eklerken Web app katmanında herhangi bir değişiklik yapmam gerekmeyecek şekilde Send yöntemini yazıyor. (yalnızca Send yönteminin değiştirilmesi yeterlidir)

ASP.NET Web formlarını kullanıyorum & C#.

+0

Farklı tüketilen Web hizmetlerinin nasıl olduğuna bağlı. İdeal olarak, yapılandırmada sadece bir URL olabilir. Aksi halde tam olarak ne yapmak zorunda olduğunuza bağlıdır (iki örneği gösterin). Çalışma zamanında Send() yöntemini derleyebilirsiniz. –

+0

Web referansları arasında bir sarıcı oluşturmalı ve web referansları arasında karar vermek için bazı Polymorphie hileleri kullanmalısınız. :) – Jannik

+1

Lütfen soruyu farklı 'Gönder 'isteklerinin ne tür bir uygulama içereceğini de ekleyerek soruyu daha spesifik hale getirin. Bu tür bir problem için her zaman 100 farklı çözüm vardır, mevcut sorunun formatı verilen herhangi bir cevap karanlıkta çekim olacaktır. – Bas

cevap

1

Uygulamamdan tamamen memnun değilim, ancak bu ilk yaklaşım.

Temel olarak, her iki Web Rehberinin etrafına bir sarıcı oluşturun ve Test sınıfında müşterinize dayanarak doğru referansı arayın.

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(); 
     } 
    } 
} 
+0

Yani, hangi yöntem 'Web' katmanında çağırmalıyım? –

+1

Peki, hangi müşterinin aktif olduğunu tam olarak nasıl karar verdiğinizi bilmek yardımcı olabilir. – Jannik