Классы в DLL

Я использовал DLL на C# и вызвал метод, который вернул мне объект C# класса DBConnection. У меня вопрос: если DLL не знает, на каком языке она будет использоваться, как она может вернуть объект класса C#?

это DLL .net DLL или обычная DLL Windows. Как вы назвали его функции

pm100 02.05.2018 21:31

Это объект .NET / CLR, а не объект C#.

Ron Beyer 02.05.2018 21:31

В IL - из чего состоит dll (сборка) - нет такого понятия, как язык, по крайней мере, C# или VB. Это просто Ил. Таким образом, даже ваш C# -код транслируется в IL. Так что не имеет значения, на каком языке вы написали свой код, он преобразуется в IL. Однако детали слишком широки для однозначного ответа, поэтому я голосую за то, чтобы закрыть этот вопрос как «слишком общий».

HimBromBeere 02.05.2018 21:31

Неясно, пишете ли вы свою DLL или используете external. Например, если вы разрабатываете C# DLL, вам следует сделать свой класс C# доступным для COM, а затем вы можете использовать его с C++.

Markiian Benovskyi 02.05.2018 21:32

Любой компилятор, который может генерировать код, работающий в .NET, генерирует IL. Аббревиатура от Intermediate Language. В этом языке есть поддержка объектов, их поведение в IL принципиально не отличается от того, как они ведут себя в C#. Специфично для DBConnection, провайдер базы данных часто пишется на языке C. Сделано доступным для любого .NET-совместимого языка с помощью оболочки, написанной на расширении языка C++ / CLI. Иногда с помощью pinvoke.

Hans Passant 02.05.2018 21:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Не все библиотеки DLL одинаковы. Некоторые из них специфичны для COM. Некоторые нет. Некоторые из них представляют собой сборки .Net IL. Некоторые нет. Эта DLL представляет собой сборку .Net. Объекты класса, которые он предоставляет для вас, являются объектами нет строго C#. Это объекты .Сеть.

Это работает для вас, потому что C# сам построен для .Net и использует объекты .Net. Если бы вы использовали VB.Net, F#, IronPython, C++ CLR или другую платформу, использующую .Net, вы также могли бы использовать DLL. Но для C, Java, VBA и т. д. Будет гораздо труднее.

Сборка .NET - это стандарт, не зависящий от языка. Если вы напишете код на C#, он будет генерировать ту же «сборку» .NET, что и VB .NET или F#.

DLL не возвращает «объект C#». DLL возвращает объект .NET.

Другие вопросы по теме