#c# #.net #vb.net #reference
#c# #.net #vb.net #ссылка
Вопрос:
Примечание: Я новичок, поэтому вполне может существовать совершенно очевидный способ, который я не распознал.
У меня есть следующие проекты:
TradingProject (my code) Has reference to TradingLibrary, and to ApiLibrary?
TradingLibrary (my code) Has reference to ApiLibrary
ApiLibrary (3rd party code)
Я создаю несколько проектов (например, TradingProject), которые взаимодействуют с программным обеспечением посредством использования существующей ApiLibrary. Но я хочу поместить универсальные методы в библиотеку, которую я пишу: TradingLibrary.
Тем не менее, я хотел бы использовать некоторые части ApiLibrary непосредственно из TradingProject. Однако затем мне нужно было бы передать объект (класса ApiLibrary) в метод в TradingLibrary. Где должен быть распознан объект. Однако я предполагаю, что это будет проблемой, поскольку TradingLibrary использует собственную ссылку на ApiLibrary, поэтому она не будет распознана как те же классы?
Итак .. Вопрос в том. Есть ли какой-нибудь способ, которым я могу «переслать» ссылку ApiLibrary из TradingLibrary в MyProject, чтобы они использовали ту же ссылку? Или мне нужно дублировать классы и наследовать от ApiLibrary для каждого класса? Нравится:
NameSpace TradingLibrary
Public Class SomeClass
Inherits ApiLibrary.SomeClass
End Class
Я думаю, это сработало бы, если я сделаю это для всех классов, которые мне нужны, но, возможно, есть какой-то более простой способ, о котором я не знаю?
Приветствия!
Ответ №1:
Если это одна и та же сборка (dll), то тип тот же, и несоответствия не произойдет.
Если у вас есть несколько версий одной и той же библиотеки dll, загружаемой в один и тот же AppDomain, тогда все уже ужасно перепутано. На этом этапе вы можете использовать пересылку через конфигурацию; например, следующие пересылки и MVC 1.* / 2.* ссылки на MVC 3.0
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Но я подчеркиваю: вышеуказанное обычно не требуется, особенно если вы отправляете свои библиотеки DLL рядом с приложением (а не используете GAC).
Комментарии:
1. о .. Я не знал, что они будут распознаны как однотипные. Тогда, я думаю, это не будет проблемой. Спасибо!
Ответ №2:
Вы сталкиваетесь с какой-либо проблемой? Затем явно укажите проблему. Я не думаю, что возникнут какие-либо проблемы с вашей структурой пространства имен.
Комментарии:
1. Нет, я просто продумывал свой код заранее. Но, похоже, это не будет проблемой.