Я бы сказал, что ответ «нет» по той самой причине, по которой arrow function
отличается от function
в JavaScript, а именно, изменяя лексическое this
и arguments
. Этот ответ содержит много подробностей о том, как function () {}
отличается от myFunction = () => {}
.
Наряду с этим, использование функций со стрелками запретило бы использование функций классов, поэтому, если вы внедряете какие-либо экземпляры службы, вы не сможете их использовать.
@Injectable()
export class AppController {
constructor (private readonly appService: AppService) {}
@Get('/')
hello(): string {
return this.appService.sayHello();
}
}
будет работать и возвращать строку из функции appService.sayHello()
, но этот
@Injectable()
export class AppController {
constructor (private readonly appService: AppService) {}
@Get('/')
hello = (): string => {
return this.appService.sayHello();
}
}
не будет возвращать строку из функции appService.sayHello()
, поскольку он не знает о appService
].
Для написания больших xml, XmlWriter
(напрямую) - ваш друг, но его сложнее использовать. Другой вариант - использовать подходы DOM / объектной модели и комбинировать их, что, вероятно, выполнимо , если вы захватите контроль над XmlWriterSettings
, отключите маркер xml и избавитесь от объявления пространств имен ...
using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
public class Foo {
[XmlAttribute]
public int Id { get; set; }
public string Bar { get; set; }
}
static class Program {
[STAThread]
static void Main() {
using (XmlWriter xw = XmlWriter.Create("out.xml")) {
xw.WriteStartElement("xml");
XmlSerializer ser = new XmlSerializer(typeof(Foo));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
foreach (Foo foo in FooGenerator()) {
ser.Serialize(xw, foo, ns);
}
xw.WriteEndElement();
}
}
// streaming approach; only have the smallest amount of program
// data in memory at once - in this case, only a single `Foo` is
// ever in use at a time
static IEnumerable<Foo> FooGenerator() {
for (int i = 0; i < 40; i++) {
yield return new Foo { Id = i, Bar = "Foo " + i };
}
}
}
Почему бы просто не использовать TextWriter для записи XML?
Используйте XmlWriter :
[...] писатель, который обеспечивает пост, некэшированные, перенаправляющие средства создание потоков или файлов, содержащих XML-данные.
Рассматривали ли вы его сжатие перед записью на диск? С XML вы можете добиться более чем 10-кратного сжатия и даже больше. на сжатие файла и запись сжатой версии, вероятно, у вас уйдет меньше времени, чем на чтение всей версии размером 500 МБ.