Визуальный отладчик студии ведет себя странно, когда я использую сочетание общего ссылочного типа с общей структурой:Как избавиться от System .__ Canon в отладчике Visual Studio?
class C<T>
{
public T ClassItem { get; set; }
}
struct S<T>
{
public T StructItem;
}
class Program
{
static void Main(string[] args)
{
var foo = new C<S<string>> {ClassItem = new S<string> {StructItem = "Bar"}};
}
}
Когда я пытаюсь заглянуть в поле ClassItem, я вижу странный System.__Canon
вместо фактических содержимого поля :
на самом деле, есть способ взглянуть на содержание структуры, если добавить эту строку в окне Watch: ((S<string>) foo.ClassItem).StructItem
. В этом случае я вижу строку «Бар». Но это большая боль с большими проектами и более сложными типами. Так есть способ заставить отладчика вести себя нормально?
У меня есть две версии Visual Studio: 2013 и 2015, оба они ведут себя одинаково.
Вопрос msdn связан с некоторой ошибкой в .net 2.0 и, похоже, немного устарел. Цель __Canon теперь яснее для меня, но это был не вопрос. Вопрос заключался в плохих способностях отладчика при отображении содержимого структуры. Кажется, что единственный способ - заменить 'struct S' классом. –
koxy