Чтобы ответить на ваш первый вопрос, слабые ссылки используются для хранения ссылки на объект, не предотвращая сборку мусора этим объектом.В этом случае кажется, что они поддерживают список всех экземпляров класса Server.Такой список должен был бы использовать слабые ссылки, потому что иначе ни один экземпляр этого класса никогда не будет удален после создания, если только он не был удален из этого списка первым.То, что они используют в этом списке экземпляров, я не могу сказать, не видя остальной код, но они могли бы выполнять какое-то кэширование или пул соединений (хотя последнее будет плохо, потому что ado.net уже делает это для вас).
Кроме того, знайте, что сами слабые ссылки являются объектами, и поэтому, если ссылки, которые больше не ссылаются на живой объект, будут удалены из списка, они вызовут утечку памяти.Однако они являются небольшими объектами и вряд ли вызовут проблему, если не будет создано большое количество экземпляров Сервера.
Что касается вашего второго вопроса, я не знаю, сколько объектов MethodInfo для этого нормально.тип среды.Однако я помню, как читал во времена .Net 2.0, что объекты отражения никогда не выгружаются после того, как они были запрошены в данном домене приложения.Насколько я знаю, это не изменилось.Но, поскольку среда выполнения будет создавать не более одного такого объекта для каждого уникального метода, это вряд ли будет проблемой, если они не используют какую-то генерацию кода во время выполнения.В противном случае максимальное количество таких объектов, которые могут быть созданы, будет ограничено количеством методов в сборках, используемых приложением.