Re[2]: consoleapplication1.exe_p1121_r15_ad1 -- что это?
От: 0K Ниоткуда  
Дата: 03.10.10 07:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Можно глянуть как MS его получает через рефлектор. Класс System.Net.NetworkingPerfCounters в сборке System и метод GetInstanceName.

А>В целом этот метод можно вызвать через reflection, а можно просто взять код который там написан (тем более, что VersioningHelper.MakeVersionSafeName — публичный метод)

Да, действительно. Спасибо (жалко под Анонимом).

Пока буду использовать это:



string str = ReplaceInvalidChars(AppDomain.CurrentDomain.FriendlyName);
            string str2 = VersioningHelper.MakeVersionSafeName(string.Empty, ResourceScope.Machine, ResourceScope.AppDomain);
            string str3 = str + str2;
            if (str3.Length > 0x7f)
            {
                str3 = str.Substring(0, 0x7f - str2.Length) + str2;
            }
            
            Console.WriteLine(str3);

private static string ReplaceInvalidChars(string instanceName)
{
    StringBuilder builder = new StringBuilder(instanceName);
    for (int i = 0; i < builder.Length; i++)
    {
        switch (builder[i])
        {
            case '/':
            case '\\':
            case '#':
                builder[i] = '_';
                break;

            case '(':
                builder[i] = '[';
                break;

            case ')':
                builder[i] = ']';
                break;
        }
    }
    return builder.ToString();
}


А>Как нормально получить instance — мне не известно


В MSDN ничего об этом нет. Правда упомянули что символы нужно заменить (функция выше). Пока буду использовать вариант выше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.