2009-07-23 3 views
8

У меня всегда была идея, что корневое пространство имен в .NET, «System», было в основном для материалов, которые не слишком зависеть от конкретной платформы.Почему Windows.Forms в системе, а не Microsoft?

мне было интересно, если кто-то есть идеи или понимание, почему Windows.Forms имен в System и не Microsoft, так как это, кажется, довольно закрепилась на одной платформе.

(нет пламени войны или ненужных MS не трепку, если вообще возможно, пожалуйста! :))

+5

На самом деле Windows.Forms также можно использовать в Mono и, следовательно, также скомпилировать для Mac OS X и $ your_linux_distribution. – Residuum

+0

Не беспокойтесь о пламенных войнах. Здесь довольно редко. Такого рода ответы будут низкими и потерять интерес довольно быстро. –

+1

Интересный вопрос - мне также хотелось бы узнать, как MS решает, что входит в систему и что происходит в Microsoft.Слишком много вещей в Системе, похоже, связаны с Windows, и слишком много вещей в Microsoft могут работать на альтернативных платформах. – Keith

ответ

13

Я где-то читал, что System.* пространств имен для вещей, которые являются частью базовой структуры .Net, в то время как Microsoft.* пространства имен предназначены для дополнительных дополнительных добавленных дополнительных добавлений или вещей, которые находятся в разработке.

EDIT:

Брэд Абрамс имеет обсуждение об этом в своем блоге What Does that .NET Namespace Mean: System.* and Microsoft.*

Кроме того, цитата из Visual Basic 2005 с .NET 3.0 Справочник программиста:

Корневое пространство Microsoft содержит элементы, относящиеся к Microsoft. Теоретически любой поставщик может внедрять языки .NET, которые переводят на код промежуточного языка (IL). Если бы вы строили такой язык, элементы в пространстве имен Microsoft обычно не распространялись бы на ваш язык. Элементы в пространстве имен System ... будут полезны для пользователей вашего языка, так как они предназначены для программистов, которые используют языки Microsoft, но элементы в пространстве имен Microsoft, вероятно, не будут столь же полезными.

Это означало бы, что если бы я должен был сделать новый .Net язык, я мог бы использовать в System.Windows.Forms имен, чтобы сделать UIs, но я бы, вероятно, не имеет особого смысла для классов в Microsoft.* пространствах имен.

+0

Очень хорошая точка! Никогда не думал об этом таким образом, но это действительно имеет большой смысл. – mcjabberz

1

Мое предположение было бы:

Microsoft предусматривала основу .NET как имеющий возможность быть мультиплатформенной, но они были только собирается обеспечить среду выполнения для платформы Windows. Вероятно, они предположили, что любой, кто предоставляет среду выполнения для другой платформы, будет реализовывать ее таким образом, чтобы использовать System.Forms. Среда выполнения будет обрабатывать различия между собственными реализациями.

+0

Не особенно правдоподобно, учитывая, насколько привязаны System.Forms к User32. – EFraim

+1

Очень верно. Я продолжаю надеяться, что, возможно, пространство имен было задумано до реализации ... и реализация не была тем, что они предполагали. Сомневаюсь, я знаю. –

+0

@EFraim Не совсем. Конечно, реализация не очень абстрактная, но это не обязательно, когда вы выполняете свою собственную среду исполнения - вы все равно заменяете все это. Но в то время как основной элемент пользовательского интерфейса зависит от Windows, он не привязан * к Windows (если вы не используете платформенно-зависимые вещи, например, переопределяете «WndProc»). Mono реализует Windows.Forms отлично с любым настольным менеджером, который у вас есть в вашей системе. – Luaan

0

Просто потому, что «Microsoft Windows» была сокращена до «Windows», это не означает, что концепция «окна» не шире, чем Microsoft. Все реализации графических интерфейсов с момента первоначального интерфейса IBM PARC через Microsoft Windows, X11 и т. Д. Относятся ко всем элементам управления Windows и Form, именно Microsoft назвала их особым внедрением «Windows». Таким образом, System.Windows.Forms кажется правильным, так как не обязательно, чтобы окно было частью «Windows». Вероятно, это должны быть просто окна с нижним регистром w. Но это нарушит соглашения об именах пространств имен.

+0

На самом деле Windows.Forms специализируется на стиле Microsoft (R) Windows, в отличие от GTK # и Cocoa # – Residuum

+0

На самом деле я думаю, что причина, по которой вы получаете внешний вид Microsoft (R) Windows, - это то, что вы используете Microsoft (R) Windows. См. Ответ от @adrianbanks. –

+0

Когда я компилирую Windows.Forms с моно в Debian Sid, я все равно получаю взгляд от Microsoft Windows, похожий на запуск приложений Microsoft Windows с вином. – Residuum

Смежные вопросы