2016-06-22 6 views
1

Мне нужно написать веб-метод с общим типом, потому что я верну строку или XmlDocument. Есть мои коды;Общий тип WebMethod в веб-службе

[WebMethod] 
public T test<T>() 
{ 

    var type = Context.Request.QueryString["type"]; 

    if (type == "json") 
    { 
     string result = ""; 
     return result; 
    } 
    else 
    { 
     XmlDocument result = new XmlDocument(); 
     return result; 
    } 

} 

Ошибка:

не может преобразовать строку в T или XmlDocument Т.

Что такое ошибки здесь?

+0

компилятор не знает заранее, какой тип вы дадите ему, когда вы вызовете этот метод. Вам понадобится переменная 'T result', если вы хотите ее вернуть. –

+0

вы можете вернуть объект вместо определенного типа. – H77

+0

Что вы пытаетесь сделать? Сериализация выполняется каркасом на основе конфигурации и * известных * заголовков типа 'content-type'. С другой стороны, веб-методы определяют * хорошо известные и определенные * операции, они не могут быть общими. В этом случае им это не нужно. Тот же метод может вернуть Json или SOAP, если правильно запрограммирован * запрос * –

ответ

1

Вы не можете использовать общие методы в веб-сервисе

+0

Любое предложение по этой проблеме? Я хочу взять тип из querystring и хочу вернуть этот тип? –

+1

@ AdemBüyük проблема - это сама конструкция. Нет такой вещи, как «общий» веб-сервис. Все они имеют схемы контрактов, выставленные в WSDL. Вы не можете этого сделать, если не знаете тип. BTW WCF уже поддерживает возврат SOAP или JSON на основе запроса. –