2009-02-20 8 views
6

Estoy trabajando con una biblioteca que usa Environment.NewLine como nueva línea de caracteres cuando escribe un archivo. Lo necesito para escribir archivos formateados en Unix y, como tal, me gustaría cambiar el carácter de nueva línea.¿Puedo cambiar el valor de Environment.NewLine?

¿Puedo cambiar el valor de Environment.NewLine?

¿Alguna otra idea (aparte de convertir la creación de la publicación del archivo)?

+0

¿Por qué no puedes simplemente codificar manualmente en la nueva línea de caracteres si eso es lo que quieres? – ryeguy

+0

No es mi biblioteca – TheSoftwareJedi

Respuesta

10

¿Puedo cambiar el valor de Environment.NewLine?

No. Si sabe para qué plataforma escribir, cree clases para cada una de estas plataformas y permita que tengan su propia implementación. En el caso más simple, esto se vería de la siguiente manera:

public abstract class Platform { public abstract string Newline { get; } } 

public sealed class Unix : Platform { 
    public override string Newline { get { return "\n"; } } 
} 

etc., y luego sólo tiene que utilizar una instancia de la clase apropiada.

+0

Eso es lo que pensé. Haré una creación de archivo de conversión ya que no es mi biblioteca para cambiar. ¡Gracias! – TheSoftwareJedi

2

Según MSDN, la clase de entorno está sellada por lo que no podría heredar de ella para cambiar el valor. Que yo sepa, esa es la única forma en que usted podría haberlo hecho. Alternativamente, podría intentar y crear una clase parcial que amplíe la clase de entorno. Nunca he probado esto último, así que no estoy seguro de si funcionará.

+0

La propiedad NewLine es estática ... Puede ampliar todo lo que desee. – Kugel

0

Constante de propiedad Environment.NewLine, por lo que no hay cambio. Lo mejor que puedo recomendar es cambiar en todas partes donde se usa esto, a tu propia constante.

0

¿La biblioteca de terceros escribe en un Stream o le pasa el nombre del archivo?

En el primer caso, podría pasar un MemoryStream y luego reemplazar las líneas nuevas para obtener las que desea. En este último, hágalo escribir en un archivo temporal, luego transmita al archivo real (mientras reemplaza los finales de línea).

1

Environment.Newline está devolviendo el carácter de nueva línea del entorno de tiempo de ejecución que aloja el tiempo de ejecución .Net. No debe usar esto para la conversión de nueva línea al carácter de nueva línea de otra plataforma.

Recomendaría implementar su propia clase para las conversiones.

0

Dios lo bendiga no puede ... cambiaría completamente el significado completo del espacio de nombres System.Environment.

Lo que quiere hacer es escribir algo para un sistema operativo específico (no importa en qué entorno esté ejecutando la aplicación), entonces Medio ambiente. no es lo que deberías estar usando para comenzar.

-2

Tuvimos este problema donde tuvimos que cambiar el valor de NewLine a <br /> para la salida web.

Necesitaba hacer otra propiedad para usar en nuestra clase. Realmente no hay forma de evitarlo.

Cuestiones relacionadas