Иногда не зная каких-то особенностей используемого продукта, можно потратить множество времени на задачу, которую можно сделать очень просто и элегантно.
Примером одной из подобных задач является просмотр значения переменной типа SecureString во время отладки.
Пример кода взят из книги "Отладка приложений для Microsoft.NET" Джона Роббинса. Habib Haydarien - руководитель проекта по разработке отладчика Visual Studio, приводит отличный способ это сделать с помощью прокси.
[assembly: DebuggerTypeProxy ( typeof ( Example.SecureStringDebuggerProxy ), Target = typeof ( SecureString ) )]
namespace Example
{
public class SecureStringDebuggerProxy
{
private string m_value;
public SecureStringDebuggerProxy(System.Security.SecureString s)
{
IntPtr ptr = Marshal.SecureStringToBSTR ( s );
this.m_value = Marshal.PtrToStringBSTR ( ptr );
Marshal.FreeBSTR ( ptr );
}
public string Value
{
get
{
return m_value;
}
}
}
}
Результат его использования такой, какого и хотелось бы ожидать:
Правда для того чтобы эта схема работала, необходимо добавить этот код в файл AutoExp.cs, находящийся в папке "C:\Documents and Settings\ user_name\My Documents\Visual Studio 2005\Visualizers" и снова его откомпилировать в файл AutoExp.dll, который следует положить в ту же папку.
No comments:
Post a Comment