.NET Common Language Infrastructure имеет две различные концепции:
System.Drawing
, которые используются для различения нескольких типов, которые в противном случае имели бы одно и то же имя . Пространства имен образуют иерархию, основанную на разделителях полной остановки (точки), поэтому вы должны думать, что типы в пространстве имен System.Runtime.InteropServices
подчинены тем, которые находятся в System.Runtime
Пространство имен. Однако, насколько мне известно, CLI не заботится о имени или иерархии ваших пространств имен, за исключением тех случаев, когда они делают ваши имена типов уникальными.
Кроме того, сборка может содержать типы из нескольких пространств имен, даже в разных иерархиях, , а одно пространство имен может содержать типы, определенные в нескольких сборках. Если вы посмотрите на документацию MSDN для типа в библиотеках .NET он расскажет вам, какая именно эта сборка находится. Однако , как отметил Паоло Фалабелла, MSDN не сообщит вам, какая сборка имеет пространство имен, поскольку единое пространство имен может содержать типы из нескольких сборок.
В вашем сценарии: mscorlib
- это сборка, которая определяет некоторые типы в пространстве имен System
и многие другие, такие как System.Runtime.InteropServices
, как вы отметили. Однако типы, которые вы используете в пространстве имен System.Drawing
, находятся в сборке System.Drawing
.
Поскольку сборки являются единицей развертывания и повторного использования кода, проекты Visual Studio ссылаются на сборки, а не на пространства имен и поэтому вы должны добавить ссылку на сборку System.Drawing в проекте Visual Studio для своей программы.
Оператор VB.NET Imports
(и его эквивалент C #, using
директива ) позволяет ссылаться на типы в пространстве имен , не вызывая каждый раз имя пространства имен. То есть, с помощью Imports System.Drawing
, вы можете записать Graphics
в свой код вместо System.Drawing.Graphics
. Но это все оператор Imports. В частности:
Imports System
не создает автоматически ссылки на проекты для каждой сборки в мире, которая определяет типы в пространстве имен System. Imports mscorlib
не означает, что вы ссылаетесь на каждый тип сборки «mscorlib» по его короткому имени. Это означает, что вы можете ссылаться на типы в пространстве имен mcorlib по их коротким именам, что не только совсем другое, но и вряд ли будет то, что вы хотите. Итог: если вы хотите получить доступ к GDI +, то вы используете типы в пространстве имен System.Drawing, но это имя не имеет ничего общего с именем сборки GDI +. Microsoft выбрала имя «System.Drawing» для сборки, которая содержит типы GDI +, но она могла бы выбрать «gdiplus-cli», «gdi-for-dotnet» или даже «Frobinator». Независимо от того, какое имя имеет эта сборка, вы должны добавить ссылку на эту сборку. И вы не делаете этого в своем исходном коде - вы добавляете ссылки на сборки в своей конфигурации проекта Visual Studio.
Используйте приведенное ниже словарное понимание:
import json
cords = [ [20.339751164468076, 85.8083048318772], [20.339866852950124, 85.80909340132757]]
print(json.dumps([{'lat':x,'lon':y} for x,y in cords],indent=4))
Вывод:
[
{
"lat": 20.339751164468076,
"lon": 85.8083048318772
},
{
"lat": 20.339866852950124,
"lon": 85.80909340132757
}
]