У меня возникла проблема в проекте C# SQL CLR, где публично объявленные элементы Generic.List не отображаются как общедоступные в отладчике. Это проблематично, потому что я пытаюсь сериализовать объект в XML. В реальном проекте есть несколько сложных объектов, но очень простой пример будет выглядеть примерно так:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void DoSomething()
{
// the Thing Object has a public property of List<string>
// that is created in the constructor
Thing t = new Thing();
t.Items.Add("test");
t.Items.Add("test2");
// now, if I look at t in the debugger, it has given the
// items list a capacity of 4 and shows the items as
// non-public members (2 with values and 2 that are null)
}
Я хотел опубликовать здесь изображение из отладчика, но, похоже, я не могу сделать это как новый пользователь...
С учетом всего сказанного, такое поведение связано с тем, что это проект SQL CLR? Тот же код отлично работал при разработке в консольном приложении (хотя я мог что-то напутать, добавляя его в проект CLR).
Добавление дополнительной информации об объекте Thing — оно включает следующее объявление для Items:
public List<string> Items { get; set; }
Затем в отладчике элементы просто показывают емкость и количество (без реальных элементов или свойств для элементов). Фактические экземпляры элементов перечислены в разделе «Непубличные члены».
Items
или на внутренний/частный резервный массив? - person Blorgbeard   schedule 28.01.2014