Здравствуйте, Аноним, Вы писали:
А>Можно глянуть как 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 ничего об этом нет. Правда упомянули что символы нужно заменить (функция выше). Пока буду использовать вариант выше.