2010-06-08 2 views
1

Если кто-то разработать компонент .NET, который полагался на неспецифических версии поставщика DLL - скажем, он работал с My3rdPartyComponent.dll, который сборка .NET, но неважно, какая версия.Компиляция компонента .NET, который использует неспецифическую требуемую версию компоненты поставщика третьей партии

Некоторые экземпляры классов, найденные в этом компоненте, должны быть переданы в мой компонент. Разработчики будут ссылаться на мою dll-компонент, но не имеют доступа к исходному коду.

В принципе, я хочу, чтобы пользователь мог передать экземпляр 3rdPartyComponent.MyClass в мои функции компонента, но мне все равно, если это версия 1.1, 2.2, 2.23.980 и т. Д. Сторонней dll ,

Есть ли способ сделать это, пока еще печатая параметр я хочу передать в свой компонент? Я не хочу использовать Object в качестве ссылки.

В моем проекте компонента я мог бы указать SpecificVersion = True на опорной сборку. Будет ли это решать мою проблему или будут ли другие проблемы «dll hell», чтобы справиться с тем, что я не вижу?

ответ

0

По существу, нет, вы не можете делать то, что хотите (по крайней мере, насколько мне известно). Вся предпосылка для версии .NET - это то, что разные версии сборки - разные сборки. Таким образом, 3rdPartyComponent.MyClass версия 1.1 является совершенно другим классом от 3rdPartyComponent.MyClass версии 1.1.1 относительно .NET. К лучшему или к худшему, вот как это работает.

Если вы не имеете никакого контроля над узлом третьей стороной, то единственный способ, которым Вы могли бы поддержать это с помощью отражения. Тип dynamic в .NET 4 должен сделать его довольно простым - но он все еще взломан, и он потерпит неудачу, если интерфейс изменится малейшим образом (это, конечно же, весь смысл управления версиями).

Если вы имели некоторый контроль над этой сборкой можно извлечь некоторые интерфейсы в отдельную сборку, которая редко имеет какие-либо важные изменения, поэтому его версия почти никогда не меняется. Затем вы можете ссылаться на интерфейсы из этой сборки вместо конкретных классов.

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

  • Нет связанных вопросов^_^