Ich untersuche derzeit ein potenzielles Speicherleck in einem Windows -Dienst und stieß auf die folgende statische Klasse mit statischen Methoden, die wir aufrufen, um XML zu transformieren/zu generieren. Könnte dies ein Speicherleck verursachen, obwohl wir "Anweisungen verwenden"? Und wäre es besser Übung, stattdessen eine nicht statische Klasse für diese Funktionalität zu verwenden? < /P>
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Xsl;
public static class XSLTTransformHelpers
{
///
/// Transforms an xml formatted string using an xslt transform
///
/// The input data to be transformed
/// The transfer to be used
/// The transformed xml formatted string
public static string Transform(string inputDataXML, string inputTransformXML)
{
using (var xsltInputReader = new StringReader(inputTransformXML))
using (var xsltXmlReader = XmlReader.Create(xsltInputReader))
{
var xslt = new XslCompiledTransform();
xslt.Load(xsltXmlReader);
using (var results = new StringWriter())
using (var inputReader = XmlReader.Create(new StringReader(inputDataXML)))
{
xslt.Transform(inputReader, null, results);
return results.ToString();
}
}
}
///
/// Serializes an object into an xml string
///
/// The object type to be serialized into xml
/// The object to be serialized
/// The object serialized as an xml string
public static string GetXml(T objectToSerialize)
{
XmlAttributes attrs = new XmlAttributes();
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
XmlRootAttribute xRoot = new XmlRootAttribute();
// Set a new Namespace and ElementName for the root element.
xRoot.ElementName = objectToSerialize.GetType().Name;
attrs.XmlRoot = xRoot;
/* Add the XmlAttributes object to the XmlAttributeOverrides.
No member name is needed because the whole class is
overridden. */
xOver.Add(typeof(T), attrs);
var xmlSubmit = new XmlSerializer(typeof(T), xOver);
using (var stringWriter = new StringWriter())
using (var xmlWriter = XmlWriter.Create(stringWriter))
{
try
{
xmlSubmit.Serialize(stringWriter, objectToSerialize);
}
catch (Exception ex)
{
throw ex;
}
return stringWriter.ToString();
}
}
}
Ich untersuche derzeit ein potenzielles Speicherleck in einem Windows -Dienst und stieß auf die folgende statische Klasse mit statischen Methoden, die wir aufrufen, um XML zu transformieren/zu generieren. Könnte dies ein Speicherleck verursachen, obwohl wir "Anweisungen verwenden"? Und wäre es besser Übung, stattdessen eine nicht statische Klasse für diese Funktionalität zu verwenden? < /P> [code]using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; using System.Xml.Xsl;
public static class XSLTTransformHelpers { /// /// Transforms an xml formatted string using an xslt transform /// /// The input data to be transformed /// The transfer to be used /// The transformed xml formatted string public static string Transform(string inputDataXML, string inputTransformXML) { using (var xsltInputReader = new StringReader(inputTransformXML)) using (var xsltXmlReader = XmlReader.Create(xsltInputReader)) { var xslt = new XslCompiledTransform(); xslt.Load(xsltXmlReader);
using (var results = new StringWriter()) using (var inputReader = XmlReader.Create(new StringReader(inputDataXML))) { xslt.Transform(inputReader, null, results); return results.ToString(); } } }
/// /// Serializes an object into an xml string /// /// The object type to be serialized into xml /// The object to be serialized /// The object serialized as an xml string public static string GetXml(T objectToSerialize) {
XmlAttributes attrs = new XmlAttributes(); XmlAttributeOverrides xOver = new XmlAttributeOverrides(); XmlRootAttribute xRoot = new XmlRootAttribute();
// Set a new Namespace and ElementName for the root element. xRoot.ElementName = objectToSerialize.GetType().Name; attrs.XmlRoot = xRoot;
/* Add the XmlAttributes object to the XmlAttributeOverrides. No member name is needed because the whole class is overridden. */ xOver.Add(typeof(T), attrs);
var xmlSubmit = new XmlSerializer(typeof(T), xOver);
using (var stringWriter = new StringWriter()) using (var xmlWriter = XmlWriter.Create(stringWriter)) { try { xmlSubmit.Serialize(stringWriter, objectToSerialize); } catch (Exception ex) { throw ex; } return stringWriter.ToString(); } } } [/code]
Wenn ich in Visual Studio eine neue Methode in einer Klasse erstelle, generiert mir die IDE die Methode als intern, aber ich möchte, dass public die Standardeinstellung ist.
Ich habe keine...
Beim Erstellen einer neuen Methode in einer Klasse in Visual Studio generiert die IDE die Methode als intern, aber ich möchte, dass public die Standardmethode ist.
Ich habe keine Möglichkeit...
Problem
Ich versuche, ein sehr großes Blockmodell (5,8 GB CSV -Datei) mit Zentroid -X-, Y- und Z -Koordinaten mit einem zu klemmen Höhenraster. Ich versuche nur die Blöcke zu erhalten, die direkt...
Vor kurzem hat ASP.NET Core 9 eine neue Middleware veröffentlicht, app.MapStaticAssets();, um die Bereitstellung statischer Ressourcen zu verbessern.
Ich habe sie bereitgestellt ein ASP.NET Core...