.Net WebServices и/касательно аргументы WebMethod

Во-первых, когда вы открываете и записываете файл, нужно запомнить, что закрываете файл после записи. Вот так.

file = open('filePath/input.train', 'wb')
for i in range(len(myList)):
    file.write(bytes((myList[i]),'UTF-8'));
file.close()

во-вторых, код python не должен иметь ";"

в-третьих, file - это ключевое слово python, поэтому не используйте file в качестве имени переменной. Вы можете использовать f или my_file или кого угодно, но не используйте ключевое слово python.

В-четвертых, Python имеет iterator, использование iterator лучше, чем ваше for i in range(len(xxx)).

Все это, ваш код может выглядеть следующим образом.

f = open('filePath/input.train', 'wb')
for line in myList:
    f.write(bytes(line, 'UTF-8'))
f.close()
11
задан BenAlabaster 18 December 2008 в 23:08
поделиться

2 ответа

Er... Я не знаю то, что протокол для того, чтобы предоставить ответы на Ваши собственные вопросы, но статья, на которую ссылается Steven Behnke, дала некоторые представления для меня, чтобы вывести решение этой причудливой ситуации, и а не оставить всех остальных для выяснения, каковы последствия, я думал, что совместно использую свои результаты...

Так, считайте следующий webmethods определенным в моем WebService

[WebMethod]
public string Method1()
{
    return "This is my return value";
}

[WebMethod]
public void Method2(out string strVal1)
{
    strVal1 = "This is my value passed as an output";
    //No return value
}

[WebMethod]
public void Method3(out string strVal1, out string strVal2)
{
    strVal1 = "This is my strVal1 value passed as an output";
    strVal2 = "This is my strVal2 value passed as an output";
    //No return value
}

[WebMethod]
public string Method4(out string strVal1, out string strVal2)
{
    strVal1 = "This is my strVal1 value passed as an output";
    strVal2 = "This is my strVal2 value passed as an output";
    return "This is my return value";
}

Теперь... согласно документу, первый параметр определил как, если метод возвращается пусто, то первый параметр автоматически используется в качестве возвращаемого параметра. Таким образом, я получил бы доступ к каждому из своих методов следующим образом:

Method1: общедоступная строка Method1 () {}

var str = svc.Method1();
Console.WriteLine(str);

Method2: общественность освобождает Method2 (представляют strVal1 в виде строки) {}

var str = svc.Method2();
Console.WriteLine(str);

Таким образом, Вы получаете доступ к ним обоим точно тем же способом..., который чрезвычайно сбивает с толку. Кто на земле понял бы это, не будучи сказанным это кем-то еще? Это вне моего понимания, как это могло быть хорошей идеей...

Method3: общественность освобождает Method3 (представляют strVal1 в виде строки, представляют strVal в виде строки) {}

var str2 = String.Empty;
var str1 = svc.Method3(out str2);
Console.WriteLine(str1);
Console.WriteLine(str2);

Method4: общедоступный строковый Method4 (представляют strVal1 в виде строки, представляют strVal2 в виде строки) {}

var str1 = String.Empty;
var str2 = String.Empty;
var str3 = svc.Method4(out str1, out str2);
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.WriteLine(str3);

Таким образом, как Вы замечаете - если сигнатура метода не обеспечивает возвращаемое значение [который является возвратами пусто], затем первый параметрический усилитель становится возвращаемым значением. Если это уже обеспечивает возвращаемое значение, то это не делает.

Это может чрезвычайно сбивать с толку кого-то, который не столкнулся с тем документом. Большое спасибо, для если та ссылка Steven - я действительно ценю его.

... и тому, кто бы ни решил, что шаблон разработки был хорошей идеей, которая будет записана в Платформу.NET - я не могу думать, что обладало бы Вами, чтобы думать, что это было хорошей идеей... Мне действительно не нравитесь Вы вполне сильно, в конце концов, это.

ПРИЛОЖЕНИЕ:

То, что я только что понял, - то, что для добавления к беспорядку если бы Вы используете касательно вместо затем, Вы не делаете этого, Вы рассматривали бы WebMethods точно, как Вы будете иметь при использовании их для вызова обычного метода в приложении:

[WebMethod()]
public void Method3(ref string strVal1, ref string strVal2)
{
    strVal1 = "First argument return value";
    strVal2 = "Second argument return value";
}

Теперь для вызова этого Вы использовали бы:

string val1 = String.Empty;
string val2 = String.Empty;
svc.Method3(ref val1, ref val2);
Console.WriteLine(val1);
Console.WriteLine(val2);

Это несоответствие является ошеломляющим... то, что это дизайном, непостижимо мне.

16
ответ дан 3 December 2019 в 06:48
поделиться

Возможно, это поможет:

http://kbalertz.com/322624/Proxy-Class-First-Parameter-Service-Method-Returns-Return-Value-Reference.aspx

Моя любимая часть:

СОСТОЯНИЕ

Это поведение дизайном.

2
ответ дан 3 December 2019 в 06:48
поделиться