2016-11-26 4 views
0

У меня есть общий класс, чтобы создать фабрику каналов из интерфейса и другой класс для вызова метода обслуживания:Generic ServiceCaller класс

public class ServiceCaller<T> 
{ 
    public static T GetInstance() 
    { 
     //ServiceManager is a generic class for create a ChannelFactory 
     ServiceManager<T> channel = new ServiceManager<T>(); 

     return channel.InnerChannel; 
    } 
} 

И я использую это:

var response = ServiceCaller<TempConvertSoap>.GetInstance().CelsiusToFahrenheit("2"); 

Как сделать это без GetInstance методы непосредственно сделать:

var response = ServiceCaller<TempConverSoap>.CelsiusToFahrenheit("2"); 

возможно ли это?

Благодаря

+0

Вы уверены, что вы хотите сделать 'метод CelsiusToFahrenheit' быть статический метод в обобщенном классе' ServiceCaller ' ? Для этого вы не можете использовать интерфейс, и вам нужно вручную записать имя метода таким же, как 'TempConvertSoap.CelsiusToFahrenheit' – Fabio

ответ

0

Это возможно, но только если вы включите эту функцию в ServiceCaller. Там нет никакого способа, вы можете иметь конструктор создать что-то другое, чем экземпляр класса вы находитесь.

public class ServiceCaller<T> 
{ 
    public static string CelsiusToFahrenheit(string val) 
    { 
     ServiceManager<T> channel = new ServiceManager<T>(); 
     return channel.InnerChannel.CelsiusToFahrenheit(val); 
    } 
}