Создание одноразовых объектов статическими методамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Создание одноразовых объектов статическими методами

Сообщение Anonymous »

В настоящее время я исследую потенциальную утечку памяти в службе Windows и сталкивался с статическим классом ниже со статическими методами, которые мы призываем преобразовать/генерировать XML. Может ли это вызвать утечку памяти, даже если у нас есть «использование» операторов? И будет ли лучше использовать нестатический класс для этой функции? < /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();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... ic-methods
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создание одноразовых объектов статическими методами
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Считается ли перегрузка между статическими методами/методами экземпляра в Java перегрузкой? [дубликат]
    Anonymous » » в форуме JAVA
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Кэширование с использованием SpatialFocus.MethodCache, но со статическими методами в C#
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • DRY — производный класс со статическими методами
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Преимущества классов только со статическими методами в C++
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»