Представление Char с эквивалентной строкой - PullRequest
5 голосов
/ 03 января 2012

У меня есть следующий класс как DataSource для ListBox:

class SeparatorChars
{
    /// <summary>
    /// Text to describe character
    /// </summary>
    public string Text { get; set; }

    /// <summary>
    /// Char value of the character
    /// </summary>
    public char Value { get; set; }

    /// <summary>
    /// Represent object as string
    /// </summary>
    /// <returns>String representing object</returns>
    public override string ToString()
    {
        return Text + " '" + Value + "'";
    }
}

Проблема в том, что по умолчанию будет использоваться Value как обычный символ, добавляемый в строку, дляНапример, если я определю этот класс для Tab следующим образом:

var TabSeparator = new SeparatorChars {Text = "Tab", Value = '\t'}

Строковое представление будет:

Tab '     '

Но мне нужно, чтобы оно было

Tab '\t'

Как это сделать?!

Ответы [ 2 ]

6 голосов
/ 03 января 2012

По общему признанию разорвал из этого поста и не проверял.

public override string ToString()
{
    return ToLiteral(Text + " '" + Value + "'");
}

private string ToLiteral(string input)
{
    var writer = new StringWriter();
    CSharpCodeProvider provider = new CSharpCodeProvider();
    provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
    return writer.ToString();
}
4 голосов
/ 03 января 2012

Вот блог с примером кода: Марк Гу: Escape-последовательности в C #

...